jquery事件委托疑问(delegate)

蓝色雨点 2016-04-10 11:22:38
点击某个空间弹出 $.confirm 确认框, 确认框的内容是动态来自于当前页面的Div块。
由于 $.confirm 弹出框在 close 的时候回执行 $.remove 程序,所以内容需要每次创建;
基于以上情况使用的是事件委托:delegate
HTML如下:


JS代码如下:


遇到这个问题我也做过简单测试,发现以下代码也是无效的:

<div class="test">
<button class="btn">Delegate Test</button>
</div>


$("body").undelegate(".test .btn", "click").delegate(".test .btn", "click", function(){alert(1)});
$("body").undelegate(".test .btn", "click").delegate(".test .btn", "click", function(){alert(1)});
var jc = $.confirm({
title : "Delegate Test",
content : ""
});
jc.setContent($("<div/>").append($(".test .btn")).html());

但是如果在原来的html标签中追加新的选择器则会触发委托事件
...全文
180 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
蓝色雨点 2016-05-05
  • 打赏
  • 举报
回复
没有其他同学遇到这样类似的问题了吗? 自己给自己顶贴了。。。
蓝色雨点 2016-04-10
  • 打赏
  • 举报
回复
引用 1 楼 Q80470101 的回复:
jquery的选择器写错了: $("body").undelegate(".test .btn", "click") 改成$("body").undelegate(".test.btn", "click") // 去掉".test“和”.btn"之间的空格 $(a b) //表示a下面的b $(ab) //表示a且b
可是我的结构是 div.test>button.btn 并不是 button.test.btn
家里敷泥呀 2016-04-10
  • 打赏
  • 举报
回复
jquery的选择器写错了: $("body").undelegate(".test .btn", "click") 改成$("body").undelegate(".test.btn", "click") // 去掉".test“和”.btn"之间的空格 $(a b) //表示a下面的b $(ab) //表示a且b
家里敷泥呀 2016-04-10
  • 打赏
  • 举报
回复
把拆开,分成两行写: $("body").undelegate(".test .btn", "click"); $("body").delegate(".test .btn", "click", function(){alert(1)});

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧