jQuery - 在'this'的上下文中,如何选择孩子的孩子?

时间:2010-07-28 18:04:10

标签: jquery jquery-selectors children

在滚动包装div时,我需要不同的嵌套子进行不同的操作。

一个div需要淡化到一个不透明度,另一个div需要做另一件事。

这些都包含在我无法篡改的很多东西中。

我不知道如何给孩子打电话给孩子......我已经尝试了jQuery的每个frikkin组合,但它只是不想玩,因为它已经挂在了函数的'this'部分。

但如果我拿走'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

因为它永远不会起作用,所以'this'需要 out 引号。如果我们不能使用em,那么解决方案是什么?

编辑 - 好的,这是一个非常新手的问题。对不起,希望能在某个地方为初学者提供帮助。谢谢你的耐心等待。

4 个答案:

答案 0 :(得分:2)

尝试$(".foo>#bar", this)$(this).children('.foo').children('#bar')

另外,请记住合法ID在页面中应该是唯一的,因此该示例只能写成$('#bar') ...

答案 1 :(得分:2)

您需要.children('.vpLeft'),而不是.children('vpLeft')。您正在选择nodeName ==='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>

答案 2 :(得分:1)

要给孩子的孩子打电话,你可以这样做:

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

或者您可以使用与find类似的children,但scans the DOM recursively除外。

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

答案 3 :(得分:0)

我相信$(this).find()将适用于此。

查看http://api.jquery.com/find/以获取有关查找的更多信息。