2013-10-07 39 views
2

如果我的頁面標題中有一個.click()函數,是否有可能稍後在頁面中覆蓋它?是否可以在JQuery中更改.click()函數?

例如,如果我有這樣的標題:

<script> 
$("document").ready(function() { 
    $("a.lol").click(function() { 
     alert("aaa"); 
    }); 
}); 
</script> 

有沒有可能改變$("a.lol")提醒別的東西,而不是提醒「AAA」?

回答

5

試試這個,

$("document").ready(function() { 
    $("a.lol").click(function() { // initially the click event 
     alert("aaa"); 
    }); 
    $("a.lol").off('click');// off the click event 
    $("a.lol").on('click',function() { // again bind new click event with on() 
     alert("new click"); 
    }); 
}); 

閱讀​​和off()

+1

這是我的理解是,關閉()將不會刪除添加的處理程序與點擊() 。從文檔:「.off()方法刪除使用.on()附加的事件處理程序」。 –

+0

謝謝!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! – user2217162

+2

@BrianStephens我剛試過。對我來說工作得很好。如果你[看源代碼](http://james.padolsey.com/jquery/#v=1.10.2&fn=jQuery.fn.click),你會發現'.click'只是映射到'.on內部(如'.bind'和'.delegate')。 – Blazemonger

3

您可以使用.unbind(),然後「放回」添加一個新的處理程序。

$("a.lol").unbind('click'); 
1

使用.off()

$("a.lol").off('click'); 

,並重新添加使用.on()

$("a.lol").on('click',functionName); 

$("a.lol").on('click',function() { 
    //code here 
}); 
0

使用$("a.lol").off('click')刪除所有點擊處理。之後,您可以安裝新的。

對於舊版本的jQuery,使用unbind()

0

是的,你將不得不與off()刪除當前處理,然後用新的處理程序再次調用點擊()。

// Some code 
$("a.lol").off("click") 
$("a.lol").click(function() { 
    alert("ooo"); 
}); 

PS:根據您的使用情況,你也許可以使用one()將觸發處理程序只有一次,然後刪除自身

相關問題