0

我对“事件点击”和“执行顺序”有疑问。

我在这里做一个例子(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 的操作(绑定事件)。

这可能吗?

4

3 回答 3

1

我相信你正在寻找preventDefault().
更多在这里

$(document).ready(function(){
    $('#comments-replybutton').click(function(e){
        e.preventDefault();
        alert('2 attach event');
    });
});​
于 2012-07-23T17:30:31.710 回答
0
$(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/

于 2012-07-23T17:25:20.323 回答
0

试试这个:

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

如果你还需要在最后执行 inline 语句,你将需要这样的东西:

$(document).ready(function(){
    var initialEvent = $('#comments-replybutton')[0].onclick;
    $('#comments-replybutton').click(function(){
        alert('2 attach event');
    }).click(initialEvent);
});​
于 2012-07-24T06:29:23.093 回答