1

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() 。在萤火虫中,id 似乎已更改,但我第二次单击该按钮会触发相同的警报(“讨厌的警报”)。还有一些奇怪的事情......如果我使用live(),在鼠标右键单击按钮消失(就像它应该的那样)。有什么建议吗?谢谢

4

1 回答 1

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>
于 2009-10-24T00:55:31.493 回答