jquery绑定事件

时间:2009-10-24 00:51:24

标签: jquery events bind traversal

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();
});
好的,所以我打算在一次点击后更改id,然后按钮再做一些其他事情(隐藏)。我也试过live()。在firebug中,它看起来像id已经改变,但我第二次点击按钮会触发相同的警报('讨厌警报')。奇怪的是...如果我使用live(),鼠标右键单击按钮消失(就像它应该)。任何sugestions?感谢

1 个答案:

答案 0 :(得分:2)

您基本上将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>