2014-12-08 2 views
0

Предупреждение не срабатывает, потому что функция openClose() отсутствует, и она выдает ошибку.onbind или удалить onclick attr failed

<div class="spoilertop" onclick="openClose('cbd6c32c3118dbbdc3fbdc37e0805292')"> 

Как я могу отвязать или лучше удалить тег onclick?

$('.spoilertop').click(function(){ 
    $(this).attr('onclick','').unbind('click'); 

    alert('f'); 
}) 

Я попытался $(this).attr('onclick','').unbind('click'); и e.preventDefault(), но не работает.

+1

не могу понять: я хочу, чтобы добавить событие щелчка к классу но тег находится где-то еще – beNerd

+0

см. это: http://stackoverflow.com/questions/1756425/prevent-onclick-action-with-jquery – beNerd

ответ

2

Ваш код работает - атрибут onclick удален после первый щелчок стреляет. Однако onclick срабатывает перед click в jQuery, поэтому openClose всегда будет запускать первый раз, см. this example. Вы увидите, что предупреждение foo отображается только для первого щелчка.

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

Чтобы удалить его из .spoliertop элементов на нагрузке, вы можете сделать это:

$(function() { 
    $('.spoilertop').attr('onclick','').unbind('click'); 
}); 
+0

Я не могу удалить attr, потому что он откуда-то еще .. или вы говоря, что я удаляю его перед событием клика? – mike19911

+0

Я добавил пример кода, чтобы показать, как удалить его при загрузке страницы: http://jsfiddle.net/yg5790uw/1/ –

+0

У меня проблема с удалением coz Я использую вызов ajax, затем привязываю результат к dom. Я добавил. Наконец-то() все еще не удалось удалить onclick. – mike19911

0
$('.spoilertop').click(function(){ 
    $(this).unbind('click'); 
    $(this).removeAttr('onclick'); 
    alert('Off'); 
}); 

Demo