2

我有一张桌子。我正在返回一个行列表,并且在其中一行中我有一个按钮。此按钮有一个名为“密码”的类。我正在为这个类附加一个点击事件。每次用户单击此按钮时,我都会进行 ajax 调用并从服务器获取密码并将其显示在单元格中...

问题是每当我返回部分视图(虚拟分页、返回更多行、过滤记录或排序)时,单击事件不再起作用。

这是我的 javascript

 $('.password').click(function () {
            var self = $(this);
            var accountID = $(this).attr('data-id');
            var route = {
                serverAction: 'GetDecryptedPassword',
                args: {
                    ID: accountID
                }
            };

            App.getJSON(self, route, function (sender, data) {
                $("#" + accountID).html(data);
            });

            return false;
        });

我猜一旦部分视图刷新了元素,处理程序就不再附加。是否需要重新连接?

任何帮助,将不胜感激。

4

2 回答 2

3

你需要委托事件

$(staticContainer).on('click', '.password', function () {

当脚本加载时,事件总是附加到页面上的元素。因此,当您使用 Ajax 获取其他行时,这些行仍然不存在。

因此,这些事件不受这些元素的约束。因此,如果您将事件委托给静态容器,您基本上是在侦听该容器上的事件,并且当单击事件发生时,该事件将冒泡到父级并触发事件。

于 2013-05-17T22:49:53.063 回答
0

我找到了一个解决方案:

试着做:

$(document).on("click", "YOUR_SELECTOR", function(e){
  /// Do some stuff ...
});

代替 :

$("YOUR_SELECTOR").on("click", function(e){
  /// Do some stuff ...
});
于 2016-10-14T17:48:49.647 回答