2015-02-09 4 views
1

Можно ли изменить порядок событий для вызова функции предупреждения с сообщением Huh? первым и только затем следующим предупреждением с помощью «Да!». сообщение?JavaScript: Как изменить порядок событий?

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

Мой код jQuery.

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

Ссылка на jsFiddle: http://jsfiddle.net/84Lyq3n9/

+0

Если вы используете только .click(), его довольно легко http://jsfiddle.net/84Lyq3n9/1/ – Musa

+0

Но я не могу удалить встроенное событие 'onclick'. Так может быть, есть еще один элегантный подход? – Alex

+0

Можете ли вы изменить значение onclick? Вы можете ссылаться на пользовательскую функцию, которая вызывает оба предупреждения в любом порядке. – FuriousD

ответ

2

Как об этом:

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); 
}); 
+0

Хорошее решение. Но, возможно, есть опция без удаления атрибута ('$ ('. Elem'). RemoveAttr ('onclick')')? – Alex

+0

Похоже, это возможно, я дал ему еще один вариант и обновил свой ответ. Попробуйте (работает для меня в хроме) –

0

Но вы можете сделать это разными способами. Сначала вы можете удалить атрибут «onclick». Вы можете сделать это с помощью javascript.

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

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

Вот ссылка: http://www.w3docs.com/learn-javascript/javascript-events.html

Смежные вопросы