68

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

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

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

4

7 回答 7

193

尝试

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

由于您的选择框是从代码生成的,因此您必须使用事件委托,在那里$(document)您可以拥有最接近的父元素。

或者

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

更新:

第二个工作正常,选择器的另一个变化使其工作。

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

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

于 2013-10-05T05:04:41.467 回答
11

尝试这个

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

请检查.on() 选择器

于 2013-10-05T05:05:51.207 回答
10

您可以通过以下方法触发 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');
});
于 2017-01-04T06:22:45.413 回答
3
$(document).on('change','#multiid',function(){
  // you desired code 
});

参考_

于 2013-10-05T05:08:14.497 回答
1

这对我有用!

$('#<%= ddlstuff.ClientID %>').change(function () {
    alert('Change Happened');
     $('#<%= txtBoxToClear.ClientID %>').val('');
});
于 2016-04-17T05:14:22.787 回答
0

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

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

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

于 2020-06-17T13:25:35.547 回答
0

您可以尝试以下方法,它应该可以工作

$(document).on('change','#fieldid',function(){
    alert('change triggered');
});
于 2021-10-04T14:54:48.173 回答