我有一个ajax调用,它返回一个带有select下拉列表的JSON对象,如下所示:
{
"responseCode": 200,
"field_value": "1",
"field_options": {
"175": "Incorrect Listing",
"176": "High Return Rate",
"177": "Easily Damaged"
},
"selectOptions": "<select id=\"do_not_order_options_102450\" class=\"input-medium\"><option value=\"\">Choose Option<\/option><option value=\"175\">Incorrect Listing<\/option><option value=\"176\">High Return Rate<\/option><option value=\"177\">Easily Damaged<\/option><\/select>"
}
在我的页面上,我输出了选择下拉列表。 (我的页面上有很多这些。)
在我的jQuery脚本中,我设置了这个:
$(function(){
$('select[id^="do_not_order_options_"]').on("change",function(){
alert(1);
});
});
当我选择一个选项时它没有被解雇......任何人都知道可能是什么问题?
谢谢!
答案 0 :(得分:2)
您引用的代码将为匹配的选择框连接事件处理程序正确。但是,如果您向页面添加更多内容,则不会挂起他们的change
事件。
您可能希望查看事件委派:
$(function() {
$('some container all these selects share').on('change', 'select[id^="do_not_order_options"]', function() {
// Handle change
});
});
jQuery ensures that the change
event bubbles,因此我们可以将它挂钩到容器元素上,并使用jQuery的帮助来触发我们的处理程序,仅用于匹配元素(在这种情况下选择)。
由于我们将事件挂钩在容器上,因此在容器中添加更多选择会使它们神奇地工作。