外部选择组件上的jquery更改事件

时间:2009-09-22 12:19:46

标签: jquery

我有一些选择,我已经在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中的选择的文档中选择触发更改事件的任何想法吗?

1 个答案:

答案 0 :(得分:3)

听起来您正在运行代码以在元素实际添加到DOM之前添加处理程序。确保在load函数完成其工作后执行添加处理程序的jQuery代码。重新加载列表时,您需要重新应用处理程序。最简单的方法是在load方法回调中应用处理程序。很遗憾,您无法使用live handlers,因为它们不支持更改事件。

$("#samaritan").load('usersList.php', function() {
    $("select").change(function() {
        alert("you chose "+$(this).val());
    });
});