Подтвердить что ты не робот

Получить значение "onclick" с помощью jQuery?

Можно ли получить текущее значение атрибута onClick тега A через jQuery?

Например, у меня есть:

<a href="#" onclick="location.href='http://www.google.com'; return false;" id="google" onclick="alert('hello')">Click</a>

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

Можно ли сделать что-то вроде:

var link_click = $("#google").onclick;

или

var link_click = $("#google").click;

Итак, что позже в моем коде я могу повторно применить этот код или eval(), если это необходимо?

4b9b3361

Ответ 1

Я никогда этого не делал, но это будет сделано следующим образом:

var script = $('#google').attr("onclick")

Ответ 2

mkoryak правильный.

Но если события связаны с этим DOM node с использованием более современных методов (не используя onclick), тогда этот метод не будет выполнен.

Если вы действительно этого хотите, посмотрите этот вопрос и его принятый ответ.

Ура!


Я снова прочитал ваш вопрос.
Я хотел бы сказать вам следующее: не используйте onclick, onkeypress и нравится привязывать события.

Использование лучших методов, таких как addEventListener(), позволит вам:

  • Добавить несколько обработчиков событий в конкретное событие
  • выборочно удалить некоторых слушателей.

Вместо использования addEventListener() вы можете использовать обертки jQuery, например $('selector').click().

Приветствует снова!

Ответ 3

Это работает для меня

 var link_click = $('#google').get(0).attributes.onclick.nodeValue;
 console.log(link_click);

Ответ 4

$('#google').attr('onclick') + ""

Однако Firebug показывает, что это возвращает функцию 'onclick'. Вы можете вызвать функцию позже, используя следующий подход:

(new Function ($('#google').attr('onclick') + ';onclick();'))()

... или используйте RegEx, чтобы удалить function и получить только инструкции внутри него.

Ответ 5

Я не совсем уверен, как это сделать в jQuery... но это работает:

var x = document.getElementById('google').attributes;
for (var i in x) {
 if (x[i].name == "onclick") alert(x[i].firstChild.data);
}

но, как сказал Харшат, было бы лучше, если бы вы использовали прослушиватели событий, так как удаление и добавление этой функции обратно в событие onclick может быть неприятным.

Ответ 6

Не могли бы вы объяснить, что именно вы пытаетесь выполнить? В общем, вы НИКОГДА не должны получать атрибут onclick из элементов HTML. Также не следует указывать onclick на самом элементе. Вместо этого динамически нажмите onclick, используя JQuery.

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

$("#google").click(function() {
    if (situation) {
        // ...
    } else {
        // ...
    }
});