微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Jquery选择更改不触发

我需要捕获当一个选择框更改时,应该很简单!
$('#multiid').change(function(){
    alert('Change Happened');
});

但它不工作,我怀疑的问题是,选择框不存在的文档准备好它只创建,如果需要,所以我在HTML中创建它为空,填充它与代码作为测试,但没有工作。

function buildmulti(id,name,price) {
    // build action items for action bar
    var optlist = $('<select></select>').attr('id','multiid').attr('name','multiid');
    optlist.append('<option value="0">Select Size</option>');
    $.each(option,function(index,val) {
        if(val.prodID *1  == id * 1) {
            v = val.ID;
            fprice = price * 1 + val.pricechange * 1;
            t = name + ' - ' + val.variation +  ' - ' + currency + (fprice).toFixed(2);
            optlist.append('<option value="' + v + '">' + t + '</option>');
        }
    })
    $('#addbasket').append(optlist);
};

它可能是另一个支架的地方,但我找不到它!

解决方法

尝试
$(document).on('change','#multiid',function(){
    alert('Change Happened');
});

由于您的选择框是从代码生成的,因此您必须使用event delegation,其中代替$(document),您可以有最近的父元素。

要么

$(document.body).on('change',function(){
    alert('Change Happened');
});

更新:

Second one works fine,there is another change of selector to make it work.

$('#addbasket').on('change',function(){
    alert('Change Happened');
});

理想情况下,我们应该使用$(“#addbasket”)作为最接近的父元素[如上所述]。

原文地址:https://www.jb51.cc/jquery/184680.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐