是否有可能改變事件的順序來調用警報功能,並首先發送消息Huh?
,然後纔會發出下一個提示'Yeah!'。信息?JavaScript:如何改變事件的順序?
<div class="elem" onclick="alert('Yeah!')"></div>
我的jQuery代碼。
$('.elem').click(function() {
alert('Huh?');
})
鏈接的jsfiddle:http://jsfiddle.net/84Lyq3n9/
是否有可能改變事件的順序來調用警報功能,並首先發送消息Huh?
,然後纔會發出下一個提示'Yeah!'。信息?JavaScript:如何改變事件的順序?
<div class="elem" onclick="alert('Yeah!')"></div>
我的jQuery代碼。
$('.elem').click(function() {
alert('Huh?');
})
鏈接的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()
t執行上下文:
var el = $('.elem').get(0);
var inline_click_handler = el.onclick;
el.onclick = null;
$('.elem').click(function() {
alert('Huh?');
inline_click_handler.call(el);
});
很好的解決方案。但是也許有一個選項沒有刪除屬性('$('。elem')。removeAttr('onclick')')? – Alex 2015-02-09 00:29:13
看起來有可能,我再給它一次,並更新我的答案。請嘗試(在鉻中爲我工作) – 2015-02-09 00:39:27
但是你可以用很多方法來做到這一點。 首先,您可以刪除屬性「onclick」。您可以使用javascript來完成。
$('.elem').removeAttr("onclick");
$('.elem').click(function() {
alert('Whatever you want');
alert('Huh?');
})
這裏是一個鏈接:http://www.w3docs.com/learn-javascript/javascript-events.html
如果僅使用。點擊(),它很容易http://jsfiddle.net/84Lyq3n9/1/ – Musa 2015-02-09 00:06:28
但我不能刪除內嵌事件'onclick'。那麼也許還有另一個優雅的方法? – Alex 2015-02-09 00:07:48
你可以改變onclick的價值嗎?您可以將其引用到一個自定義函數,該函數以您喜歡的任何順序調用這兩個警報。 – FuriousD 2015-02-09 00:12:46