2009-08-23 4 views
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"); 
}); 

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

ありがとうございました。

+0

コードボタンを使用してテキストをコード化できますか?読むことをより良くする:-) –

+0

こんにちは、申し訳ありませんが、私は持っていたと思った。 これはすべてのコードボックスになりました。 :D – Johnny

答えて

5

タブをクリックしたときに、私はそれがトリックを行い推測

​​

...その後いくつかの派手なものを行うためにjQueryのlive()を使用し、(一般的に良い練習)「アクティブ」クラスを追加してみてください。

+0

ああありがとうございました。私はjqueryのような初心者ですが、ときには助けを得るのはいいです:) – Johnny

+0

Hehe、それはSOのためのものです;-) – JorenB

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はフレンドリーですか?これは一度だけバインドするからです。 liveバインドメソッドを使用すると、ブラウザはDOMの変更をリッスンします。

+0

それは?イベントの委譲を使用するので、複数のアイテムを扱うときには、 'live()'が一般的にはより良い解決策であると思っていました... 'live()'は1つのイベントのみを添付し、 ' 。私は正しい? – JorenB

関連する問題