jQuery attr ('onclick') - PullRequest
       21

jQuery attr ('onclick')

29 голосов
/ 25 апреля 2011

Я пытаюсь изменить атрибут "onclick" в jQuery, но он не меняется, вот мой код:

$('#stop').click(function() {
     $('next').attr('onclick','stopMoving()');
}

У меня есть элемент с id = "stop" и когда пользователь нажимаетна нем я хочу изменить атрибут onclick для элемента с id = "next".

Если кто-то знает, где находится решение, пожалуйста, помогите!

Ответы [ 5 ]

46 голосов
/ 25 апреля 2011

Сделайте это способом jQuery (и исправьте ошибки):

$('#stop').click(function() {
     $('#next').click(stopMoving);
     // ^-- missing #
});  // <-- missing );

Если к элементу уже подключен обработчик click через атрибут onclick, его необходимо удалить:

$('#next').attr('onclick', '');

Обновление: Как указывал @Drackir, вам также может понадобиться вызвать $('#next').unbind('click');, чтобы удалить другие обработчики кликов, подключенные через jQuery.

Но это догадка здесь. Как всегда: больше информации => лучшие ответы.

13 голосов
/ 20 октября 2015

Как указывалось выше @Richard, на onClick должна быть заглавная буква 'C'.

$('#stop').click(function() {
     $('next').attr('onClick','stopMoving()');
}
7 голосов
/ 21 сентября 2011

Самый простой способ - заменить функцию .attr () на функцию javascript .setAttribute ()

$('#stop').click(function() {
    $('next')[0].setAttribute('onclick','stopMoving()');
}
0 голосов
/ 07 января 2015

Попробуйте с этой версией jquery-1.10.2!

0 голосов
/ 25 апреля 2011

Путь Феликса Клинга сработает, (на самом деле избил меня до глубины души), но я также собирался предложить использовать

$('#next').die().live('click', stopMoving);

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

...