首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除绑定元素后维护委托事件绑定

删除绑定元素后维护委托事件绑定
EN

Stack Overflow用户
提问于 2013-09-10 05:49:05
回答 1查看 54关注 0票数 0

在视图中,我有一个无序列表来显示绑定到用户下拉选择的元素。这些列表元素是基于服务器响应动态追加的。

HTML如下所示:

代码语言:javascript
复制
<div id = "element_list_parent">
  <ul id = "element_list">

  </ul>
</div>

这些元素都有通过绑定到它们的mouseovermouseoutclick事件

代码语言:javascript
复制
$("#element_list").on("$event", "img.image_class", function(e){
  //do stuff for event
});

有时,从服务器返回一个空查询。在这种情况下,我有

代码语言:javascript
复制
$("#element_list").remove();
$("#element_list_parent").html("<div class = 'empty_message'>No Results</div>");

我发现,如果我选择了一个没有要附加到'element_list‘中的项的选项,然后选择了一个具有大量附加项的选项,则委托事件将无法工作。

是否可以删除/读取元素,同时保留绑定到该元素的相同委托事件?

仅供参考,我使用的是jQuery 1.9。

EN

回答 1

Stack Overflow用户

发布于 2013-09-10 05:53:36

不要将侦听器绑定到偶尔删除的父元素,但要绑定到始终存在的元素,在您的示例中是#element_list_parent

你可以这样说:

代码语言:javascript
复制
var events = "mouseenter mouseleave click";

$("#element_list_parent").on(events, "img.image_class, .empty_message", function(e){
  //do stuff for event
});

如果您需要识别事件到元素:

代码语言:javascript
复制
$("#element_list_parent").on(events, "img.image_class, .empty_message", function(e){

    if(e.target.className=='image_class'){
         // do something for images
    }else{
         // do else for .empty_message DIV
    }

});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18707578

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档