5

例如给定这个 HTML:

<div>
    <p>p0</p>
    <p>p1</p>
    <p>p2</p>
</div>

我不明白如何编写一个连接的 jQuerythis选择器,就像这样:

$("div").on("mouseover", function () {
    $(this + " p").css({
        color: "#009"
    });
}); 

什么是正确的语法?

4

3 回答 3

17

要在另一个元素中查找元素,请使用上下文选择器。尝试这个:

$("p", this).css({ /* ... */ });

或者你可以连接id父母的 - 虽然这有点难看IMO:

$("#" + this.id + " p").css({ /* ... */ });

或者您可以find()在父元素上使用:

$(this).find("p").css({ /* ... */ });

上面的任何一个都对你有用,虽然第二个例子很丑,应该避免。this尽可能直接使用参考。

于 2012-11-05T16:37:37.927 回答
6

jQuery 选择器采用可选的第二个参数,称为“选择器上下文”。来自jQuery 文档

默认情况下,选择器从文档根目录开始在 DOM 中执行搜索。但是,可以通过使用$()函数的可选第二个参数为搜索提供替代上下文...在内部,选择器上下文是用该.find()方法实现的,因此$('span', this)等效于$(this).find('span').

回答: 你想要$("p", this)或者,等效地(但更冗长),$(this).find("p")代替你的$(this+" p"). 这会将您的选择限制为<p>s 中包含的元素的后代元素this

于 2012-11-05T16:44:21.153 回答
3

我认为您正在寻找$('p', this)哪个基本上返回上下文中的所有p标签。this

于 2012-11-05T16:37:48.153 回答