【问题标题】:JQuery events get unbound when I delete and re-add them当我删除并重新添加它们时,JQuery 事件变得未绑定
【发布时间】:2011-01-16 01:58:59
【问题描述】:

我正在创建一个具有排序功能的自定义视图,并且有一些几乎可以工作的东西,除了一旦它排序后,一旦对正在排序的元素的点击事件变得未绑定,可能是由于我如何删除元素并重新添加他们排序了。

有没有更好的方法来做到这一点,让“孩子”保持绑定事件?

function sortcontainer(container, sortby)
{
 alert(container.data("sessionlist").datetimesort);
 var children = container.children();

 children.sort(function (a, b) {
  if (sortby == "datetime")
  {
   if (!$(a).attr("starttime"))
    return -1;
   else if (!$(b).attr("starttime"))
    return 1;
   else if (container.data("sessionlist").datetimesort)
    return $(a).attr("starttime") - $(b).attr("starttime");
   else
    return $(b).attr("starttime") - $(a).attr("starttime");

  }
 }); // End sort function

 container.empty();
 container.html(children);

 if (sortby == "datetime")
  container.data('sessionlist').datetimesort = !container.data('sessionlist').datetimesort;
}

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    如果您使用的是 jQuery,那么您将希望使用 live 语法定义您的点击事件。 live 所做的是为匹配选择器的所有当前和未来事件绑定事件。

    【讨论】:

      【解决方案2】:

      听起来您直接绑定到 容器 中的元素。相反,我会使用 delegate 方法 (http://api.jquery.com/delegate/) 将事件绑定一次到 container 元素。这样,事件就不会受到移动或添加/删除 container 子元素的影响。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-10
        • 2015-07-25
        • 2023-03-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多