<a href="javascript:;" class="btn_1">按钮1</a><a href="javascript:;" class="btn_2">按钮2</a>$(function() {function foo(){$(".btn_2").removeAttr("class");alert('aa');}$(".btn_1").bind("click",foo);$(".btn_2").bind("click",foo);});我点击按钮1的时候,按钮2的class移除,弹出"aa",为什么我再点击按钮2的时候还能弹出"aa",class="btn_2"都没有了,为什么点击按钮2还能执行,当我点击按钮1以后怎样让按钮2无效??
2 回答
守候你守候我
TA贡献1802条经验 获得超10个赞
js:
$(function() { function foo(){ //var elm = $(event.target); $(this).attr('class','dada').siblings().removeAttr('class'); //$(this).addClass('class').siblings().removeClass('class'); } $("a").bind("click",foo); }) |
qq_遁去的一_1
TA贡献1725条经验 获得超8个赞
你btn_1和btn_2都绑定了click事件,执行相同的函数操作foo(),此时不管你在何时点击这两个按钮都会触发click事件而去执行foo函数。
$(".btn_2").bind("click",foo);方式绑定事件,是先通过CSS样式找到对应的元素对象,然后为这个元素的对象绑定,此后,并不会因为你将其中的一个样式或属性移除后,对应的绑定事件不生效,因为事件是绑定到元素对象上,而不是你这个属性。你这个属性只是jQuery的一个选择器,表示通过这个属性来找到对应 的元素。
如果要取消绑定事件,就必须再找到这个元素,然后将对应的事件解绑unbid
根据你问题的意思是,在你成功移除了按钮2的class样式后,这个按钮应该失效,那么,你应该在执行完点击事件后,将btn_2绑定的click事件解除:
$(".btn_2").unbind("click"); |
,那么你上面的函数应该修改成:
function foo(){ $(".btn_2").removeAttr("class").unbind("click"); alert('aa'); } |
添加回答
举报
0/150
提交
取消
