<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
提交
取消