jquery 绑定事件

发布于 2024-08-08 07:27:21 字数 537 浏览 8 评论 0原文

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(),鼠标右键单击按钮就会消失(就像它应该的那样)。有什么建议吗?谢谢

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();
});

ok, so my intention is to change the id after one click and then the button to do something else(hide). i tried with live() too. In firebug it looks like the id has changed but my second click on the button triggers the same alert('nasty alert'). And something strange...if i use live(), on mouse right click the button dissapears (like it should). any sugestions? thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

挽清梦 2024-08-15 07:27:21

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

You're basically attaching a click event handler twice to the same input.

There's no reason you should attach two event handlers, I've updated the code so a variable is used to keep track.

Edit: Fixed syntax error and now it's using .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>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文