2009-10-24 5 views
1

HTML:JQuery связать событие

<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(), на мыши правой кнопкой мыши кнопка исчезает (как и должна). любые санкции? спасибо

ответ

2

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

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

Edit: Исправлена ​​ошибка синтаксиса и теперь он использует .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> 
+0

Хмм, теоретически должно работать, но это не так, теперь вызывает только шкурку() метод – kmunky

+0

У вас есть демо? –

+0

nope, мой код намного сложнее, но я упростил его, чтобы получить идею. – kmunky

Смежные вопросы