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

其綁定因此,在這個代碼,我已經基本上,一個標籤式界面。當我再次單擊選項卡時,#holder中的信息消失。所以我想要做的是在用戶點擊標籤時解除綁定,然後在切換標籤時將其綁定。我怎樣才能將其整合到我的代碼中?取消綁定一個div再後來

謝謝。

+0

你可以使用代碼按鈕來編碼你的文本嗎?使它更好閱讀:-) – 2009-08-23 15:41:07

+0

嘿,對不起,我以爲我有。 現在所有代碼都已裝箱! :D – Johnny 2009-08-23 15:42:23

回答

5

你可以嘗試添加類「主動」當標籤被點擊(一般好的做法),然後使用jQuery的live()做一些花哨的東西...

​​

我想這做的伎倆。

+0

哦,謝謝你,完美的作品。我是jquery的新手,很高興得到一些幫助有時:) – Johnny 2009-08-23 15:50:54

+0

嘿嘿,這就是爲什麼;-) – JorenB 2009-08-23 15:53:14

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()'僅附加一個事件,而將'click()'綁定到x選項卡將創建x個事件。我對嗎? – JorenB 2009-08-23 16:21:04