我对“事件点击”和“执行顺序”有疑问。
我在这里做一个例子(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(绑定事件)的操作。
这可能吗?
答案 0 :(得分:1)
我相信你正在寻找preventDefault()
更多here。
$(document).ready(function(){
$('#comments-replybutton').click(function(e){
e.preventDefault();
alert('2 attach event');
});
});
答案 1 :(得分: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对你不会有帮助。
答案 2 :(得分:0)
试试这个:
$(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);
});