JS Установка атрибута onclick разными способами

0

Я пытаюсь установить атрибут 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"?

  • 0
    Какой мир это $a ? также онклик это плохая идея! потому что это событие!
  • 0
    @epascarello извините, это было от скрипки, уже исправлено. Мне нужен onclick, потому что это для целей pageTracker
Показать ещё 2 комментария
Теги:
onclick

2 ответа

1
Лучший ответ

$(this).onclick = "ItWorks";

Устанавливает свойство объекта JQuery, а не узла DOM.

$(this).prop("onclick", "ItWorks");

Устанавливает свойство в строку, но он ожидает функцию... и свойство не отображает непосредственно значение атрибута, как и для некоторых других свойств.

$(this).attr("onclick", "ItWorks");

Устанавливает атрибут в строку, хотя не тот, который будет делать что-либо при выполнении как JS.

Если вы хотите установить обработчик событий и используете jQuery, используйте метод on и не пытайтесь проверить его, изучив значение атрибута.

  • 0
    спасибо @Quentin за отличное объяснение
1

Почему бы не сделать это проще:

<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);

}
  • 0
    к сожалению, я не могу использовать его, потому что есть много объектов рендеринга из XML-файла и переключателей, и если и бог знает, что еще. Отличное решение, хотя, спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню