2

クリックできるようにしたいテーブルセルがあります。ただし、クリックすると、クラス「.clicked」が作成されます。表のセルにこのクラスがある場合、クリック可能にしたくありません。これを行う方法はありますか?

4

4 に答える 4

2

また、.off()メソッドを使用して、イベントのバインドを解除することもできます。

$('td').on('click', function(){
    $(this).addClass('clicked').off('click');
})
于 2013-06-25T08:09:28.817 に答える
1

これは、イベント ハンドラーの先頭にコードを挿入することで簡単に実行できます。

$('td').click(function(e) {
    if ($(this).hasClass('clicked')) {
        e.stopPropagation();
        e.preventDefault();
        return;
    }

    // the rest of your code here
});

もう 1 つのより複雑な方法は、イベント委任を使用し、クリックされたときに要素にクラスがない場合にのみ関数を起動することです。

$('table').on('click', 'td:not(.clicked)', function() {
    // your code here
});
于 2013-06-25T08:09:24.640 に答える
0

.one()イベント登録メソッドを使用してそれを行うことができます。イベントが発生すると、ハンドラーの登録が解除されます。

$('td').one('click', function(){
    console.log('hanlded', this)
})

別の解決策は次のとおりです。

$('table').on('click', ':not(.clicked)', function(){
    console.log('hanlded', this)
})
于 2013-06-25T08:08:05.450 に答える
0

:not(.clicked)クリックされたセルを除外するために使用しているセレクターに追加するだけです。

于 2013-06-25T08:10:32.277 に答える