请问关于unbind的问题

gdutqiang 2016-06-07 07:36:25
请问 当首先点击 “移除事件1”按钮的时候(也就是不点击点击添加三个事件”按钮),显示如图1所示。
为什么当我第一次点击“移除事件1”按钮,程序会跑以下代码的
$("button")
.bind("click",NewFn= function(){ //赋给函数变量
$("#show").append("<div>点击事件1</div>");
})
.bind("click",function(){
$("#show").append("<div>点击事件2</div>");
})
.bind("click",function(){
$("#show").append("<div>点击事件3</div>");
});

不是跑
$("button[name=del]").click(function(){
$("button").unbind("click",NewFn); //移除事件监听myFunc1
});
毕竟 点击 移除事件1 按钮 对应的是这段代码-- $("button[name=del]").click(function()
麻烦知道的朋友帮忙回复。先谢啦

图1


<html>
<head>
<title>unbind()移除事件监听</title>
<script language="javascript" src="jquery.min.js"></script>
<script language="javascript">
$(document).ready(function(){
var NewFn; //函数变量
$("button")
.bind("click",NewFn= function(){ //赋给函数变量
$("#show").append("<div>点击事件1</div>");
})
.bind("click",function(){
$("#show").append("<div>点击事件2</div>");
})
.bind("click",function(){
$("#show").append("<div>点击事件3</div>");
});
$("button[name=del]").click(function(){
$("button").unbind("click",NewFn); //移除事件监听myFunc1
});
});
</script>
</head>
<body>
<button>点击添加三个事件</button>
<div id="show"></div>
<button name="del">移除事件1</button>
</body>
</html>

...全文
133 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Go 旅城通票 2016-06-07
  • 打赏
  • 举报
回复
引用 6 楼 gdutqiang 的回复:
[quote=引用 5 楼 showbo 的回复:] [quote=引用 2 楼 gdutqiang 的回复:] [quote=引用 1 楼 slwsss 的回复:] $("button").bind 也会绑定button name="del"
@slwsss 谢谢您的回复 麻烦再回复下,谢了 您所说的$("button").bind 也会绑定button name="del"[,那么既然绑定了,那么 当点击 “点击添加三个事件”,为什么不会运行“$("button[name=del]").click(function(){ 这段代码呢?”[/quote] 点击 “点击添加三个事件”这个按钮只是绑定了3个append的事件,你点击它肯定就执行append了,干嘛会执行解绑按钮代码,添加的有没有绑定unbind代码 点击移除事件1的时候,会执行一次3个append,然后在执行解绑事件1的操作,再点击任意一个按钮只会执行2,3了[/quote] @showbo 谢谢您的回复 比如 首先 “点击移除事件1的时候,会执行一次3个append,然后再执行解绑事件1的操作”,那么如果接着点击 “点击添加三个事件”按钮,而这个按钮对应的代码是:$("button") .bind("click",NewFn= function(){ //赋给函数变量 $("#show").append("<div>点击事件1</div>"); }) 也就是不能再绑定NewFn了。 也就是说 unbind NewFn后,即使后面再有bind NewFn,是不能起到绑定的作用的。 这个怎么理解呢? 能不能这么理解当一个事件监听被unbind后,即使后面的程序再次会运行bind 这个事件,也是不能绑定的? [/quote] 点击按钮就没有再执行其他绑定好不好了,只是dom ready的时候执行了一次绑定 还有解绑那个按钮点击的时候才会加帮newfn 自己人看看下你写的代码
gdutqiang 2016-06-07
  • 打赏
  • 举报
回复
引用 5 楼 showbo 的回复:
[quote=引用 2 楼 gdutqiang 的回复:] [quote=引用 1 楼 slwsss 的回复:] $("button").bind 也会绑定button name="del"
@slwsss 谢谢您的回复 麻烦再回复下,谢了 您所说的$("button").bind 也会绑定button name="del"[,那么既然绑定了,那么 当点击 “点击添加三个事件”,为什么不会运行“$("button[name=del]").click(function(){ 这段代码呢?”[/quote] 点击 “点击添加三个事件”这个按钮只是绑定了3个append的事件,你点击它肯定就执行append了,干嘛会执行解绑按钮代码,添加的有没有绑定unbind代码 点击移除事件1的时候,会执行一次3个append,然后在执行解绑事件1的操作,再点击任意一个按钮只会执行2,3了[/quote] @showbo 谢谢您的回复 比如 首先 “点击移除事件1的时候,会执行一次3个append,然后再执行解绑事件1的操作”,那么如果接着点击 “点击添加三个事件”按钮,而这个按钮对应的代码是:$("button") .bind("click",NewFn= function(){ //赋给函数变量 $("#show").append("<div>点击事件1</div>"); }) 也就是不能再绑定NewFn了。 也就是说 unbind NewFn后,即使后面再有bind NewFn,是不能起到绑定的作用的。 这个怎么理解呢? 能不能这么理解当一个事件监听被unbind后,即使后面的程序再次会运行bind 这个事件,也是不能绑定的?
Go 旅城通票 2016-06-07
  • 打赏
  • 举报
回复
引用 2 楼 gdutqiang 的回复:
[quote=引用 1 楼 slwsss 的回复:] $("button").bind 也会绑定button name="del"
@slwsss 谢谢您的回复 您所说的$("button").bind 也会绑定button name="del"[,那么既然绑定了,那么 当点击 “点击添加三个事件”,为什么不会运行“$("button[name=del]").click(function(){ 这段代码呢?”[/quote] 点击 “点击添加三个事件”这个按钮只是绑定了3个append的事件,你点击它肯定就执行append了,干嘛会执行解绑按钮代码,添加的有没有绑定unbind代码 点击移除事件1的时候,会执行一次3个append,然后在执行解绑事件1的操作,再点击任意一个按钮只会执行2,3了
licip 2016-06-07
  • 打赏
  • 举报
回复
应该会执行,有个先后的顺序。 你这样设置,基本是每一次点击,都是先绑定,然后再移除,那它不是先执行了,你再移除。
slwsss 2016-06-07
  • 打赏
  • 举报
回复
$("button") .bind("click", function(){ /*页面上所有的button的click事件都会调用这个函数*/ }) $("button[name=del]").click(function(){/*页面上name为del的button click事件会调用这个函数*/ });
gdutqiang 2016-06-07
  • 打赏
  • 举报
回复
引用 1 楼 slwsss 的回复:
$("button").bind 也会绑定button name="del"
@slwsss 谢谢您的回复 您所说的$("button").bind 也会绑定button name="del"[,那么既然绑定了,那么 当点击 “点击添加三个事件”,为什么不会运行“$("button[name=del]").click(function(){ 这段代码呢?”
slwsss 2016-06-07
  • 打赏
  • 举报
回复
$("button").bind 也会绑定button name="del"

87,921

社区成员

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

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