jQuery 选择器中逗号的含义是什么

发布于 2024-10-09 16:58:26 字数 851 浏览 1 评论 0原文

<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
</head>
<body>
<ul>
  <li><strong>list</strong> item 1 -
    one strong tag</li>
  <li><strong>list</strong> item <strong>2</strong> -
    two <span>strong tags</span></li>
  <li>list item 3</li>
  <li>list item 4</li>
  <li>list item 5</li>
  <li>list item 6</li>
</ul>

<script type="text/javascript">
$('li').filter(function(index) {
  return $('strong', this).length == 1;
}).css('background-color','red');
</script>

</body>
</html>

给定上面的 HTML,下面选择器中的逗号的含义是什么?

return $('strong', this).length == 2;

如果我删除“强”这个词会发生什么?

<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
</head>
<body>
<ul>
  <li><strong>list</strong> item 1 -
    one strong tag</li>
  <li><strong>list</strong> item <strong>2</strong> -
    two <span>strong tags</span></li>
  <li>list item 3</li>
  <li>list item 4</li>
  <li>list item 5</li>
  <li>list item 6</li>
</ul>

<script type="text/javascript">
$('li').filter(function(index) {
  return $('strong', this).length == 1;
}).css('background-color','red');
</script>

</body>
</html>

Given the HTML above, what's the meaning of the comma in the selector below?

return $('strong', this).length == 2;

What will happen if I remove the word 'strong'?

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

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

发布评论

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

评论(2

攀登最高峰 2024-10-16 16:58:26

它将 this 设置为执行查询的上下文。

一种等效(且稍微更有效)的编写方式是:

return $(this).find('strong').length == 2;

当我说等效时,我的意思是在幕后,它实际上被翻转到上面的版本中。

如果删除'strong',您将没有有效的选择器。你会做的:

return $(this).find('').length == 2;

看起来它只是返回一个空的 jQuery 对象,这意味着 length 将是 0,所以你不会从 中获取任何元素>.filter()


参考

http://api.jquery.com/jQuery/

jQuery ( 选择器 [, context ] )

context

类型:Element 或 jQuery

用作上下文的 DOM 元素、文档或 jQuery

It sets this as the context from which the query is performed.

An equivalent (and slightly more efficient) way to write it is:

return $(this).find('strong').length == 2;

When I say equivalent, I mean behind the scenes, it is actually flipped around into the version above.

If you remove the 'strong', you won't have a valid selector. You'll be doing:

return $(this).find('').length == 2;

Looks like it just returns an empty jQuery object, which means length will be 0, so you won't get any elements out of the .filter().


Reference:

http://api.jquery.com/jQuery/

jQuery( selector [, context ] )

context

Type: Element or jQuery

A DOM Element, Document, or jQuery to use as context

说谎友 2024-10-16 16:58:26

如果删除 STRONG 标签,它将检查 LI 中是否有任何包含 1 个字符长的字符串,无论它们是否封装在 STRONG 标签内。
在这种情况下,不会突出显示任何结果。
像 $('strong', this) 和 $(this).find('strong') 这样的选择器几乎是相同的。

If you remove STRONG tag, it would check if any of LI contain string 1 character long, regardless if they encapsulated within STRONG tag.
In this case no results would be highlighted.
Selectors like $('strong', this) and $(this).find('strong') are pretty much the same.

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