我需要在选择框改变时捕获,应该很简单!
$('#multiid').change(function(){
alert('Change Happened');
});
Run Code Online (Sandbox Code Playgroud)
但是它不起作用,我怀疑问题是文件准备好的选择框不存在它只在需要的时候才创建,所以我在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);
};
Run Code Online (Sandbox Code Playgroud)
它可能是另一个不合适的支架,但我找不到它!
Dha*_*hak 162
尝试
$(document).on('change','#multiid',function(){
alert('Change Happened');
});
Run Code Online (Sandbox Code Playgroud)
由于您的选择框是从代码生成的,因此您必须使用事件委派,代替$(document)您可以拥有最接近的父元素.
要么
$(document.body).on('change','#multiid',function(){
alert('Change Happened');
});
Run Code Online (Sandbox Code Playgroud)
更新:
第二个工作正常,选择器的另一个变化,使其工作.
$('#addbasket').on('change','#multiid',function(){
alert('Change Happened');
});
Run Code Online (Sandbox Code Playgroud)
理想情况下,我们应该使用,$("#addbasket")因为它是最接近的父元素[ 正如我上面提到的 ].
试试这个
$('body').on('change', '#multiid', function() {
// your stuff
})
Run Code Online (Sandbox Code Playgroud)
请检查.on() 选择器
您可以通过以下方法触发chnage事件:
第一
$('#selectid').change(function () {
alert('This works');
});
Run Code Online (Sandbox Code Playgroud)
第二
$(document).on('change', '#selectid', function() {
alert('This Works');
});
Run Code Online (Sandbox Code Playgroud)
第三
$(document.body).on('change','#selectid',function(){
alert('This Works');
});
Run Code Online (Sandbox Code Playgroud)
如果此方法不起作用,请检查您的jQuery是否正常工作:
$(document).ready(function($) {
alert('Jquery Working');
});
Run Code Online (Sandbox Code Playgroud)