0

请帮我解决以下代码。我不明白。我必须在我的项目中使用这样的片段。

$('strong', this)<-这部分对我来说根本不清楚。

如果可能,请友好地逐行解释整个代码。

<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>

JavaScript:

$('li').filter(function(index) {
  return $('strong', this).length == 1;
}).css('background-color', 'red');
4

2 回答 2

1

$('strong', this)$(target, context)是带有格式的 jQuery 选择器。

根据您的代码:

thisli$('strong', li)正在搜索该标签<strong>内的那个。li

这个语句也可以写成:

$(this).find('strong')从 jQuery 库代码中你会看到:

$(target, context)格式在内部实现

$(context).find(target)过程。

有关更多信息,请参见此处

于 2012-09-13T17:15:34.333 回答
1

代码基本上是使用 jQuery 获取 li 元素的列表$('li')(这将获取<li> ... </li>页面上的所有标签)然后用函数减少这个集合.filterfilter将函数作为参数,函数在列表中的每个元素上调用,如果它返回true,则从过滤器的列表中返回元素,如果它返回false,则忽略该项目。

在这种情况下,该函数调用过滤器当前决定检查的 li 标签$('strong', this).length == 1在哪里this,如其他答案中所述,它只是检查返回<strong>..</strong>当前 li 中的标签列表。如果当前 li 中不存在 strong,则 length 为 0,因此函数返回false,这意味着过滤器不会返回它生成的列表中的那个元素,然后它会移动到下一个 li。

这意味着代码的第一部分只是生成一个带有强标签的 li 列表,然后将其与将css所有这些标签着色为红色的函数链接起来。

希望有帮助。

于 2012-09-13T17:39:01.520 回答