1

fbuttonクラスを持つ要素がいくつかあります。クリック要素をクリックされた要素にのみバインドするにはどうすればよいですか。私はこのようなコードを持っています:

    $('.fbutton').click(function() {

        /*
            Some Code 1
        */
            $(this).next().click();
        /*
            Some Code 2
        */
            enough;
    });

$(this).next().click();行は要素のクリックをトリガーしますが、他のすべてのfbutton要素もトリガーされます(この部分が気になります)。

頭に浮かぶ最初の解決策は、Some Code 2 の後にスクリプト処理を終了することです。お返しとして・・・ コードの実行が異常終了する不正な JavaScript コードを使用しました。動作しますが、実行を終了する正しい方法ではありません。JavaScript の実行を終了するにはどうすればよいですか、またはクリックした要素に対してのみイベントをトリガーするにはどうすればよいですか。


より明確
にする .fbutton をクリックしてトリガーするだけです。jqueryはクリックされた要素を識別しますか? また、トリガーはユーザーのクリックに依存する必要があるため、.fbutton 要素のクラスを定義することはできません。

4

2 に答える 2

2

stopPropagation を使用してみましたか?

$('.fbutton').on('click',function(e){
    e.stopPropagation();
   $(this).next().trigger('click'); 
});
于 2013-05-01T15:50:55.083 に答える
1

onclick でクラスを指定し、クリック トリガーをそれにバインドします。

$('.fbutton').on('click',function() {

    // Code 1

    $(this).hasClass('clicked')) ? $(this).next().trigger('click') : $(this).addClass('clicked');

    // Code 2

});

また、jQueryと$を使用していますか? 私は一貫性を保ちましたが、 $ を使用できる場合はお勧めします。

編集

私の答えを明確にするために:

これは 3 項の if ステートメントです。クリックされた項目に のクラスがあるかどうかを確認し、あるclicked場合は、必要なクリックを割り当てますが$(this).next()、まだクラスがない場合は、クラスを追加します (まだクリック ステートメントをバインドしません)。要素が再度クリックされると、 classclickedがあるため、そのときに起動する必要があります。

これにより、既にクリックされた要素にのみクリック イベントをバインドできます。

2回目の編集

これが機能することを示す jsFiddle を次に示します

例を 1 回クリックすると何も起こりませんが、クラスを追加してもう一度クリックすると、次のボタンのクリックがトリガーされますが、それ以外は何も起こりません。同じことが 2 番目のボタンにも当てはまり、他のボタン ペアとは関係なく、ペアリングごとに個別のイベントであることがわかります。

于 2013-05-01T14:35:01.497 に答える