2013-03-05 211 views
0

我正在學習一段相當簡單的代碼並將其包裝到一個函數中,該代碼從div內的項目構建了一個滑出菜單。我現在試圖從div中獲得最後一個孩子:在JavaScript函數中獲取div的最後一個孩子

experimentOne('#experimentOne'); 

    function experimentOne(masterContainer) { 
    var experimentOneMenuButton = $('masterContainer :last-child'); 
    ... etc 

但是,這會在日誌中返回[]。當我檢查寬度,而不是它應該是100px,它是1420,我猜測是窗口寬度。

如果我通過在一切都很好的情況下編碼來獲得ID的最後一個孩子,但我希望函數儘可能重用。

謝謝。

+0

如果'masterContainer'應該是一個id然後'$('#'+ masterContainer +':last-child');' – 2013-03-05 15:20:40

+1

儘管在這種情況下可能是''masterContainer:最後一個孩子'應該是'masterContainer +':最後一個孩子',或者甚至更好'$(masterContainer).children()。last()' – JJJ 2013-03-05 15:20:56

+1

你的函數期望'masterContainer'是什麼?字符串? HTMLElementObject? – Stphane 2013-03-05 15:21:10

回答

2

試試這個,如果你的masterContainer是一個元素:

var experimentOneMenuButton = $(':last-child', masterContainer); 

或者這是否是元素ID

var experimentOneMenuButton = $('#'+masterContainer+' :last-child'); 
1

masterContainer一個字符串包含父容器的值的變量,所以當你構建選擇器時,你需要使用字符串連接。

var experimentOneMenuButton = $(masterContainer + ' :last-child'); 

,或者你可以使用一個基於上下文的查找

var experimentOneMenuButton = $(':last-child', masterContainer); 

我推薦第二個解決方案,這使得使用情境基地的查找,因爲它是整潔。

演示:Fiddle

1
  • 元素編號選擇以 「#」
  • 你需要的目標immediat兒童 「>」,[空格]目標元素的所有後代

    ​​

0

那麼masterContainer裏面的字符串什麼都不會做。我覺得應該是:

$(masterContainer).find(':last-child'); 

另外請注意,experimentOne('#experimentOne');會發送一個字符串不是一個jQuery對象。這將需要experimentOne($('#experimentOne'));,這會使:

experimentOne($('#experimentOne')); 

    function experimentOne(masterContainer) { 
    var experimentOneMenuButton = masterContainer.find(':last-child'); 
    // Note the lack of jQuery wrapper around masterContainer in this version 

取決於你是否要強制一個jQuery對象在參數或函數本身!

0

您的連接錯誤。試試這樣: $(masterContainer + ' :last-child')