Я пытаюсь установить атрибут onclick на якорь следующим образом:
$("a").click(function(e) {
$(this).onclick = "ItWorks";
output = "JS onclick attempt: my onclick is: <strong>" + $(this).onclick + "</strong>";
$(this).prop("onclick", "ItWorks");
output += "<br />jQuery prop() attempt: my onclick is: <strong>" + $(this).prop("onclick") + "</strong>";
$(this).attr("onclick", "ItWorks");
output += "<br />jQuery attr() attempt: my onclick is: <strong>" + $(this).attr("onclick") + "</strong>";
alert(output);
e.preventDefault();
});
Я пробовал функции JS, jQuery prop() и attr(). Как вы можете видеть в этом примере, работает только функция.attr().
Может ли кто-нибудь сказать мне, что я делаю неправильно, что две другие попытки возвращают "null" или "undefined"?
$(this).onclick = "ItWorks";
Устанавливает свойство объекта JQuery, а не узла DOM.
$(this).prop("onclick", "ItWorks");
Устанавливает свойство в строку, но он ожидает функцию... и свойство не отображает непосредственно значение атрибута, как и для некоторых других свойств.
$(this).attr("onclick", "ItWorks");
Устанавливает атрибут в строку, хотя не тот, который будет делать что-либо при выполнении как JS.
Если вы хотите установить обработчик событий и используете jQuery, используйте метод on
и не пытайтесь проверить его, изучив значение атрибута.
Почему бы не сделать это проще:
<a href="javascript:void(0)" onclick='clickEvent("a")'>link</a>
<a href="javascript:void(0)" onclick='clickEvent("a")'>link</a>
function clickEvent(event) {
if (event == "a") {
output = "event a clicked";
} elseif (event == "b") {
output = "event b clicked";
}
alert(output);
}
$a
? также онклик это плохая идея! потому что это событие!