<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条经验 获得超7个赞
你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
提交
取消