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

わかりましたので、私の意図は、1回のクリック後にIDを変更し、次にボタンを別のこと(非表示)に変更することです。私も live() で試しました。firebug では、ID が変更されたように見えますが、ボタンを 2 回クリックすると、同じアラート (「厄介なアラート」) がトリガーされます。そして、奇妙なこと... live()を使用すると、マウスの右クリックでボタンが消えます(そうあるべきです)。何か提案はありますか?ありがとう

4

1 に答える 1

2

click基本的に、同じ入力にイベント ハンドラーを 2 回アタッチしています。

2 つのイベント ハンドラーをアタッチする必要はありません。変数を使用して追跡できるようにコードを更新しました。

編集:構文エラーを修正し、現在使用しています.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 に答える