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