Jquery选择更改不触发

时间:2013-10-05 05:01:47

标签: jquery onchange

我需要在选择框更改时捕获,应该很简单!

    $('#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);
};

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

6 个答案:

答案 0 :(得分:154)

尝试

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

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

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

<强>更新

  

第二个工作正常,选择器有另一个更改,以使其工作。

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

理想情况下,我们应该使用$("#addbasket"),因为它是最接近的父元素[正如我上面提到的]。

答案 1 :(得分:7)

试试这个

$('body').on('change', '#multiid', function() {
    // your stuff
})

请检查.on() selector

答案 2 :(得分:5)

您可以通过以下方法触发chnage事件:

第一

$('#selectid').change(function () {
    alert('This works');
}); 

第二

$(document).on('change', '#selectid', function() {
    alert('This Works');
});

第三

$(document.body).on('change','#selectid',function(){
    alert('This Works');
});

如果此方法不起作用,请检查您的jQuery是否正常工作:

$(document).ready(function($) {
   alert('Jquery Working');
});

答案 3 :(得分:3)

$(document).on('change','#multiid',function(){
  // you desired code 
});

参考 on

答案 4 :(得分:0)

这对我有用!

TF_VAR_UN=foo TF_VAR_PW=bar terraform apply

答案 5 :(得分:0)

对我来说,完美地分叉这段代码。

$('#dom_object_id').on('change paste keyup', function(){
    console.log($("#dom_object_id").val().length)
});

.on()函数的关键事件是“粘贴”以动态获取更改