2010-07-28 107 views
1

在滾動包裝div時,我需要不同的嵌套子元素來做不同的事情。jQuery - 如何在'this'的情況下選擇兒童的孩子?

一個div需要褪色到不透明度的一個級別,另一個div需要做另一件事。

這一切都包裹在很多東西,我不能篡改。

我不知道如何在兒童中調用兒童....我已經嘗試過jQuery的每個frikkin組合,但它只是不想玩,因爲它在功能的'這個'部分被牽連。

但是,如果我拿走'this'它會對文檔中的所有實例執行操作。

<div class="vpMedia"><li><a href="http://site.com"><div class="vpArrow"><image src="http://site.com/image1"></div><div class="vpLeft">Title</div><div class="vpRight"> 
<div class="vpRightImg"><image src="http://site.com/image2"></div></div></a></li></div> 

我到處找關係到一個孩子找到孩子的問題或主題,但很可惜,實在沒有什麼左右。我什麼都沒有看到:

this.children(.foo).children(#bar) 

或者也許去這條路線?

this > .foo > #bar 

因爲它永遠不會工作,「這個」必須引號。那麼,如果我們不能使用em,解決方案是什麼?

編輯 - 確定,這是一個非常新手的問題。對不起,希望能幫助初學者在那裏。謝謝你的耐心。

+1

請告訴我們您的真實* *代碼。 – 2010-07-28 18:10:33

+0

你能否提供你有問題的JS代碼的小片段? – 2010-07-28 18:17:15

+0

這段代碼看起來很錯,不值得分享! – RGBK 2010-07-28 18:25:40

回答

1

要叫孩子的孩子,你可以這樣做:

$(this).children(".foo").children("#bar"); 

,或者您可以使用find這是類似children除了它scans the DOM recursively

$(this).find("#bar"); 
+0

工作!感謝:-) 我喜歡這個發現選擇器 – RGBK 2010-07-28 18:22:37

+0

請記住,'發現'不是最有效的方法,因爲它是遞歸的。如果搜索一個應該是唯一的ID,我會在@AKX上面說。 – 2010-07-28 18:28:03

2

試過$(".foo>#bar", this)$(this).children('.foo').children('#bar')

另外請記住,合法ID應該在頁面中是唯一的,這樣的例子可以只寫$('#bar') ...

+0

+1唯一ID的好處。 – 2010-07-28 18:13:57

2

你需要做的.children('.vpLeft'),不.children('vpLeft')。您正在選擇其節點名稱==='vpLeft'的元素。

$("div .vpMedia").mouseover(function() { 
    $(this).children("li").children("a").children(".vpLeft").animate({opacity: .3}, { duration: 100, queue: false }); 
}).mouseout(function() { 
    $(this).children("li").children("a").children(".vpLeft").animate({opacity: 1}, { duration: 100, queue: false }); 
}) 

可以縮短它..

$("div .vpMedia").mouseover(function() { 
    $('>li>a>.vpLeft', this).animate({opacity: .3}, { duration: 100, queue: false }); 
}).mouseout(function() { 
    $('>li>a>.vpLeft', this).animate({opacity: 1}, { duration: 100, queue: false }); 
}) 

而且它<img><image>