簡體   English   中英

html + jquery(在onclick之前綁定onclick事件以執行操作)

[英]html + jquery ( Bind onclick event for execute action before onclick )

我對“事件點擊”和“執行順序”有疑問。

我在這里舉個例子(HTML是由外部javascript生成的):

HTML

<a href="#" id="comments-replybutton" onclick="alert('Action');return false;">Comment</a>​

JavaScript:

$(document).ready(function(){
    $('#comments-replybutton').click(function(){
        alert('2 attach event');
    });
});​

我希望在單擊“注釋”時首先執行jquery的操作(綁定事件)。

這可能嗎?

我相信您正在尋找preventDefault()
這里更多。

$(document).ready(function(){
    $('#comments-replybutton').click(function(e){
        e.preventDefault();
        alert('2 attach event');
    });
});​
$(document).ready(function(ev){
    $('#comments-replybutton').click(function(ev){
        alert('2 attach event');
        ev.stopPropagation();
    });
});​

你的意思是這樣嗎?

評論后編輯

您還可以命名函數以解除綁定:

var myEventHandler = function myFunction(ev){
    $(this).unbind(myFunction);
    alert('attach event 2');
    ev.stopPropagation();
}
$('#comments-replybutton').bind('click', myEventHandler); 
// $(something).click(fn) is just a shorthand to $(something).bind('click', fn);

編輯2

我想您只需說一下document.getElementById('comments-replybutton')。onclick =“”或類似的東西,就可以輕松殺死原始事件。 您可以通過復制以下內容來重新附加它:

var original_event_handler = $('#comments-replybutton')[0].onclick;
$('#comments-replybutton')[0].onclick = "";
$('#comments-replybutton').click(original_event_handler);

有點臟,但是我懶得查找它:S preventDefault在這里對您沒有幫助。

http://jsfiddle.net/C37ka/

嘗試這個:

$(document).ready(function(){
    $('#comments-replybutton').unbind('click').click(function(){
        alert('2 attach event');
    });
});​

並且如果您還需要在最后執行內聯語句,則將需要以下內容:

$(document).ready(function(){
    var initialEvent = $('#comments-replybutton')[0].onclick;
    $('#comments-replybutton').click(function(){
        alert('2 attach event');
    }).click(initialEvent);
});​

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM