JavaScript: 如何改变事件顺序?

JavaScript: How to change the order of events?

是否可以更改事件的顺序以首先使用消息 Huh? 调用警报功能,然后才使用 'Yeah!' 消息调用警报功能?

<div class="elem" onclick="alert('Yeah!')"></div>

我的 jQuery 代码。

$('.elem').click(function () {
    alert('Huh?');
})

Link 到 jsFiddle:http://jsfiddle.net/84Lyq3n9/

这个怎么样:

var inline_click_handler_src = $('.elem').attr('onclick');
var inline_click_handler = new Function('e', inline_click_handler_src);
$('.elem').removeAttr('onclick');

$('.elem').click(function () {
    alert('Huh?');
    inline_click_handler();
});

[编辑] 或者不修改标记内容:

var el = $('.elem').get(0);
var inline_click_handler = el.onclick;
el.onclick = null;

$('.elem').click(function () {
    alert('Huh?');
    inline_click_handler();
});

[再编辑] 如果您的内联点击处理程序使用 this,请使用 function.call() 来设置执行上下文:

var el = $('.elem').get(0);
var inline_click_handler = el.onclick;
el.onclick = null;

$('.elem').click(function () {
    alert('Huh?');
    inline_click_handler.call(el);
});

但是你可以用很多方法来做到这一点。 首先,您可以删除属性 "onclick"。您可以使用 javascript。

$('.elem').removeAttr("onclick");

$('.elem').click(function () {
    alert('Whatever you want');
    alert('Huh?');
})

这是一个link:http://www.w3docs.com/learn-javascript/javascript-events.html