jqueryselect更改不会触发

我需要捕获一个select框的变化,应该很简单!

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

但它不工作,我怀疑问题是select框不存在于文档准备好,它只是在需要时才创build的,所以我创build它在HTML中是空的,填充代码作为testing,但也没有工作。

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

由于您的select框是从代码生成的,所以您必须使用事件委派 ,在$(document)可以有最接近的父元素。

要么

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

更新:

第二个工作正常,select器有另一个变化,使其工作。

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

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

尝试这个

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

请检查.on() select器

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

参考

您可以通过以下方法激发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'); }); 

这对我有用!

 $('#<%= ddlstuff.ClientID %>').change(function () { alert('Change Happened'); $('#<%= txtBoxToClear.ClientID %>').val(''); });