如何使用一个选择器选择 jQuery 元素的子元素?

发布于 2024-09-16 10:25:48 字数 504 浏览 3 评论 0原文

我有一个带有 id article_50div。 如果我要选择 article_50 中的 .title 元素,我可以执行以下操作: $("#article_50 .title")

现在假设我想选择相同的标题,但在单击事件中:

$("#article_50").click(function(){
    $(this).children(".title").hide();
});

现在我必须调用 children 方法来选择该 .title 元素。 我可以在同一个选择器中选择它而不需要调用 children 吗?

像这样的东西:

$("this .title").hide();

谢谢!

I have an div with the id article_50.
If I were to select the .title element inside article_50, I could do the following:
$("#article_50 .title").

Now say I want to select that same title, but within a click event:

$("#article_50").click(function(){
    $(this).children(".title").hide();
});

Now I had to call the children method to select that .title element.
Could I select it within the same selector without the need to call children?

Something like this:

$("this .title").hide();

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

等待我真够勒 2024-09-23 10:25:48

快到了:

$(".title", this).hide();

Almost there:

$(".title", this).hide();
离去的眼神 2024-09-23 10:25:48
$("#article_50").click(function(){ $(".title", this).hide(); });
$("#article_50").click(function(){ $(".title", this).hide(); });
—━☆沉默づ 2024-09-23 10:25:48

如果 .title 元素实际上是 this 的子元素,请使用 .children()

当您这样做时:

$(".title", this).hide();

...jQuery 必须运行 7 或 8 个测试才能确定您正在 this 中查找 .title

然后 jQuery 将其翻转为:

$(this).find('.title')

...然后重新开始。所以在所有测试之后它无论如何都会调用一个方法。正如你所看到的,它的效率不是很高。

此外,由于 .children() 看起来只深一层,因此使用 .children().find() 更快,如果您元素实际上是一个子元素。


编辑:

更快的方法是将 #article_50 元素缓存在变量中,因此您不需要为 $(this ) 每次点击时。

var $art_50 = $("#article_50").click(function(){
    $art_50.children(".title").hide();
});

// Now you have a variable that you can use outside the click handler as well
//   in case you are selecting it elsewhere in your code.

Use .children() if the .title element is actually a child of this.

When you do:

$(".title", this).hide();

...jQuery has to run 7 or 8 tests before it figures out that you're looking for .title inside of this.

Then jQuery just flips it around into this:

$(this).find('.title')

...and starts over. So it is calling a method anyway after all that testing. As you can see it is not very efficient.

Also, because .children() only looks one level deep, it is faster to use .children() than .find() if your element is actually a child.


EDIT:

An even faster way would be to cache the #article_50 element in a variable, so you don't need to create a jQuery object for $(this) every time you click.

var $art_50 = $("#article_50").click(function(){
    $art_50.children(".title").hide();
});

// Now you have a variable that you can use outside the click handler as well
//   in case you are selecting it elsewhere in your code.
伴我老 2024-09-23 10:25:48

难道你不应该说:

$("#article_50").click(function(){ $("#article_50 .title").hide(); });

差不多一样了,你不需要叫孩子了。

Shouldn't you just be able to say:

$("#article_50").click(function(){ $("#article_50 .title").hide(); });

That's nearly the same and you don't need to call children.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文