例如给定这个 HTML:
<div>
<p>p0</p>
<p>p1</p>
<p>p2</p>
</div>
我不明白如何编写一个连接的 jQuerythis
选择器,就像这样:
$("div").on("mouseover", function () {
$(this + " p").css({
color: "#009"
});
});
什么是正确的语法?
例如给定这个 HTML:
<div>
<p>p0</p>
<p>p1</p>
<p>p2</p>
</div>
我不明白如何编写一个连接的 jQuerythis
选择器,就像这样:
$("div").on("mouseover", function () {
$(this + " p").css({
color: "#009"
});
});
什么是正确的语法?
要在另一个元素中查找元素,请使用上下文选择器。尝试这个:
$("p", this).css({ /* ... */ });
或者你可以连接id
父母的 - 虽然这有点难看IMO:
$("#" + this.id + " p").css({ /* ... */ });
或者您可以find()
在父元素上使用:
$(this).find("p").css({ /* ... */ });
上面的任何一个都对你有用,虽然第二个例子很丑,应该避免。this
尽可能直接使用参考。
jQuery 选择器采用可选的第二个参数,称为“选择器上下文”。来自jQuery 文档:
默认情况下,选择器从文档根目录开始在 DOM 中执行搜索。但是,可以通过使用
$()
函数的可选第二个参数为搜索提供替代上下文...在内部,选择器上下文是用该.find()
方法实现的,因此$('span', this)
等效于$(this).find('span')
.
回答: 你想要$("p", this)
或者,等效地(但更冗长),$(this).find("p")
代替你的$(this+" p")
. 这会将您的选择限制为<p>
s 中包含的元素的后代元素this
。
我认为您正在寻找$('p', this)
哪个基本上返回上下文中的所有p
标签。this