2
$('.tab').click(function() {
    $(this).unbind("click");
    var classy = $(this).attr("class").split(" ").splice(-1);
    var ihtml = $('.content.'+classy).html();
    $('#holder').html(ihtml);
    $('.tab').removeClass('highlight');
    $(this).addClass('highlight');
    $(this).unbind("click");
});

したがって、このコードには基本的にタブ付きのインターフェイスがあります。タブをもう一度クリックすると、#holder の情報が消えます。だから私がやりたいのは、ユーザーがタブをクリックするたびにクリックのバインドを解除し、タブを切り替えるときにバインドすることです。これを自分のコードに統合するにはどうすればよいですか?

ありがとう。

4

2 に答える 2

5

タブがクリックされたときにクラス「アクティブ」を追加してみてください(一般的には良い方法です)。次に、jQueryを使用live()していくつかの凝ったことを行うことができます...

$('.tab:not(.active)').live('click', function () { 
    $('.tab').removeClass('active');
    $(this).addClass('active');
    ... 
});

それがうまくいくと思います。

于 2009-08-23T15:44:37.917 に答える
0

また、この種の構文を使用することもできます (より高速でメモリと CPU に優しいはずです):

$('.tab').click(function () {
    var t = $(this);
    if (t.hasClass('active')) { return false; }
    $('.active').removeClass('active');
    t.addClass('active');
    /* do some stuff here */
    return false;
});

または、同じことを繰り返さないようにするには、次のようにします。

$('.tab').click(function () {
    var t = $(this);
    if (!t.hasClass('active')) {
        $('.active').removeClass('active');
        t.addClass('active');
        /* do some stuff here */
    }
    return false;
});

なぜこれは高速で CPU に優しいのですか? これは一度だけバインドするためです。bind メソッドを使用liveすると、ブラウザーは DOM の変更をリッスンします。

于 2009-08-23T16:17:32.733 に答える