событие jquery bind - PullRequest
       12

событие jquery bind

1 голос
/ 24 октября 2009

HTML:

<ul>
    <li><input type="submit" id="myId" value="someVal"/>
</ul>

JQuery

$('ul').find('input[type="submit"]').click(function{
         alert('nasty alert')
         $(this).attr('id','newId');
});

$('input#newId').click(function(){
          $(this).hide();
});

хорошо, поэтому я собираюсь изменить идентификатор после одного клика, а затем кнопку, чтобы сделать что-то еще (скрыть). я тоже пробовал с live (). В firebug похоже, что идентификатор изменился, но мой второй щелчок по кнопке вызывает то же самое предупреждение («неприятное предупреждение»). И что-то странное ... если я использую live (), при щелчке правой кнопкой мыши кнопка исчезает (как и должно быть). любые предложения? спасибо

1 Ответ

2 голосов
/ 24 октября 2009

Вы в основном подключаете обработчик событий click дважды к одному и тому же входу.

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

Редактировать: исправлена ​​синтаксическая ошибка и теперь она использует .data

<ul>
<form>
<input type=submit value=go>
</form>
</ul>
<script src=http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js></script>
<script>


    $('ul').find('input[type="submit"]').click(function() {
             if ( !$(this).data('_clicked') ) {
                 alert('nasty alert')
                 $(this).attr('id','newId');
                 $(this).data('_clicked', true);
             } else {
                 $(this).hide();
             }
             return false;
    });
</script>
...