我有一些选择,我已经在php页面中构建为外部组件,然后加载到html页面。例如,我可能在整个站点的几个地方使用组件“usersList”,所以我的php生成了这个列表,然后我在jquery中使用load来调用组件,如下所示:
$("#samaritan").load('usersList.php');
这很好用,我可以在包含文档中编写jquery来获取usersList的val()就好了。我希望能够在此列表的更改中导致事情发生。唯一的问题是,当jquery代码与原始组件位于同一页面时,更改事件似乎只是要触发。例如,以下代码将仅在此代码位于生成select的php页面上时更改select时触发带有下拉值的警报。
$("select").change(function() {
alert("you chose "+$(this).val());
});
我宁愿不必将此代码直接写入组件页面b / c我希望在我使用它的不同地方行为不同。我尝试过使用.blur,但我得到的结果相同。有关如何从包含加载到div中的选择的文档中选择触发更改事件的任何想法吗?
答案 0 :(得分:3)
听起来您正在运行代码以在元素实际添加到DOM之前添加处理程序。确保在load函数完成其工作后执行添加处理程序的jQuery代码。重新加载列表时,您需要重新应用处理程序。最简单的方法是在load方法回调中应用处理程序。很遗憾,您无法使用live handlers,因为它们不支持更改事件。
$("#samaritan").load('usersList.php', function() {
$("select").change(function() {
alert("you chose "+$(this).val());
});
});