Ответ 1
Я никогда этого не делал, но это будет сделано следующим образом:
var script = $('#google').attr("onclick")
Можно ли получить текущее значение атрибута 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(), если это необходимо?
Я никогда этого не делал, но это будет сделано следующим образом:
var script = $('#google').attr("onclick")
mkoryak
правильный.
Но если события связаны с этим DOM node с использованием более современных методов (не используя onclick
), тогда этот метод не будет выполнен.
Если вы действительно этого хотите, посмотрите этот вопрос и его принятый ответ.
Ура!
Я снова прочитал ваш вопрос.
Я хотел бы сказать вам следующее: не используйте onclick
, onkeypress
и нравится привязывать события.
Использование лучших методов, таких как addEventListener()
, позволит вам:
Вместо использования addEventListener()
вы можете использовать обертки jQuery
, например $('selector').click()
.
Приветствует снова!
Это работает для меня
var link_click = $('#google').get(0).attributes.onclick.nodeValue;
console.log(link_click);
$('#google').attr('onclick') + ""
Однако Firebug показывает, что это возвращает функцию 'onclick'. Вы можете вызвать функцию позже, используя следующий подход:
(new Function ($('#google').attr('onclick') + ';onclick();'))()
... или используйте RegEx, чтобы удалить function
и получить только инструкции внутри него.
Я не совсем уверен, как это сделать в jQuery... но это работает:
var x = document.getElementById('google').attributes;
for (var i in x) {
if (x[i].name == "onclick") alert(x[i].firstChild.data);
}
но, как сказал Харшат, было бы лучше, если бы вы использовали прослушиватели событий, так как удаление и добавление этой функции обратно в событие onclick может быть неприятным.
Не могли бы вы объяснить, что именно вы пытаетесь выполнить? В общем, вы НИКОГДА не должны получать атрибут onclick из элементов HTML. Также не следует указывать onclick на самом элементе. Вместо этого динамически нажмите onclick, используя JQuery.
Но насколько я понимаю вас, вы пытаетесь переключаться между двумя разными функциями onclick. Что может быть лучше, так это реализовать свою функцию onclick таким образом, чтобы она могла обрабатывать обе ситуации.
$("#google").click(function() {
if (situation) {
// ...
} else {
// ...
}
});