связывание событий onclick и jquery, вызывающее боль - PullRequest
4 голосов
/ 16 марта 2011

У меня есть ссылка, которая имеет атрибут onclick, и есть событие переключения, которое я связываю со ссылкой (я знаю, что я совершаю грех здесь, смешивая эти два, но я ничего не могу с этим поделатьэто.)

Теперь на этом фоне у меня есть 2 сценария:
1. Пользователь нажимает на ссылку - Порядок выполнения событий: - onclick первыйзатем переключаемое событие, связанное с помощью jQuery
2. Запускает событие click через jQuery - порядок выполнения здесь другой, связанное событие запускается сначала, затем onclick.

Что-то идет ужасно неправильно из-за этих двух сценариев и изменения порядка.Мне нужно, чтобы связанные события запускались раньше, чем onclick.Есть ли лучший способ сделать это, чем удалить атрибут onclick в init и сохранить их по ссылке через .data(), а затем обработать через событие переключения?

Еще одна вещь, о которой мне нужно позаботиться(жизнь сложна), ссылку можно переключать через строку запроса.т.е. если пользователь заходит с другой страницы по другой ссылке, будет параметр строки запроса с идентификатором ссылки, который читается другой функцией javascript, которая выполняет сценарий 2, упомянутый выше.

Так, если онклик должен быть удален, это должно быть сделано при инициализации.

Что я могу сделать, чтобы распутать этот беспорядок?

1 Ответ

5 голосов
/ 16 марта 2011

Что плохого в том, чтобы удалить функцию .onclick и повторно связать ее впоследствии (после того, как вы связали все свои методы, которые должны были срабатывать раньше)?

HTML

<div id="foo" onclick="inline();">click me</div>

Javascript

function inline() {
    alert('I was bound through onclick=');
}

$(function() {
    var $foo = $('#foo'),
        stored = $foo[0].onclick;

    $foo[0].onclick = null;

    $foo.bind('click', function() {
        alert('I was bound via jQuery');
    });
    $foo.bind('click', stored);
});

После этого кода порядок предупреждений будет:

'I was bound via jQuery'
'I was bound through onclick='

Демонстрация : http://jsfiddle.net/3MKWR/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...