2011-01-24 125 views
1

嗨,即時通訊使用此代碼的鏈接列表,其動態填充。我想當我點擊它來保持填充而不是動畫回到其原始位置。我不明白的是兩件事。 「if (!$(this)」代碼的一部分,以及如何當我沒有在任何鏈接上的一類電流它找到任何?非常感謝!有人可以爲我解釋這段代碼嗎?

$(function() { 
    $('#secondary_content_what_we_do li a').hover(function() { 
     if (!$(this).hasClass("current")) { 
      $(this).stop().animate({ 
       "paddingLeft": "10px" 
      }, 400).addClass('column_hover'); 
     } 
    }, function() { 
     if (!$(this).hasClass("current")) { 
      $(this).stop().animate({ 
       "paddingLeft": "0px" 
      }, 'slow').removeClass('column_hover'); 
     } 
    }); 

    $('#secondary_content_what_we_do a').click(function() { 
     $('a').removeClass('column_active').removeClass("current"); 
     $(this).addClass('column_active').addClass("current"); 
     $('#secondary_content_what_we_do li a').trigger('mouseleave'); 
     var url = $(this).attr('href'); 
     $('#loading_content').hide().load(url).fadeIn(1000); 
     return false; 
    }); 
}) 

UPDATE 由於某種原因,我不能評論。我現在明白,但我沒有在我的CSS當前類,所以我不知道如何行幫助。

+0

了`current`類被添加到`anchor`。沒有爲類聲明任何css規則並不重要,jQuery只是用它來識別和跟蹤元素的狀態。因此,當您將鼠標懸停在某個元素上時,代碼會標識該懸停元素是否是您單擊的最後一個元素,並相應地執行操作。 – fearofawhackplanet 2011-01-24 18:01:46

回答

2

本聲明:

if (!$(this).hasClass("current")) 

正在做幾件事情。它在jQuery對象中使用$(...)包裝this變量(在這種情況下指的是懸停的元素),然後調用其上的hasClass(...)方法,然後記錄(!)結果。聲明全文「如果這是盤旋在不具備類元素‘當前

至於你的問題的第二部分’,那麼該塊內執行代碼」,我想你指該行:

$('a').removeClass('column_active').removeClass("current"); 

,以及如何在選擇錨沒有一類current它的工作原理。如果選擇的a元素沒有current類,則該語句將不起作用(請讓我知道這是不是你問的)。

2

if (!$(this)不是一個完整的表達式; !是否定的,例如,$(this).hasClass("current")。如果你寫!($(this).hasClass("current")),它的工作原理是一樣的,也許對你更清楚。該表達意味着「如果這個對象沒有'當前'類'」。

類「當前」是越來越由線添加到東西

$(this).addClass('column_active').addClass("current"); 
0

HTML DOM元素可以在同一時間有一個以上的類。這是否清除了事情?

1
$('#secondary_content_what_we_do li a') 

選擇ALL a元件,其是一個li的後代,其本身與ID secondary_content_what_we_do元件的後代。所以這個選擇器返回jQuery包裝的DOM元素的數組

函數內部的this關鍵字是指觸發事件(clickhover或其他)的 DOM元素。

$(this)只需重新包裝了原生DOM this元素作爲一個jQuery對象,所以我們可以訪問諸如addClassremoveClass

所以jQuery函數...

$('#secondary_content_what_we_do li a').hover(function() { 
     if (!$(this).hasClass("current")) { 
      doSomething(); 
     } 
} 

,當我們將鼠標懸停在由選擇匹配的任何元素essentialy是說,如果我們上空盤旋特定元素不有類current(在!操作反轉hasClass調用的結果),然後做點什麼。 。``$(本).addClass( 'column_active')addClass( 「電流」):它被點擊時

相關問題