【问题标题】:Filter method jQuery过滤方法 jQuery
【发布时间】:2012-09-13 17:14:25
【问题描述】:

请帮助我使用以下代码。我不明白。我必须在我的项目中使用这样的 sn-p。

$('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');

【问题讨论】:

标签: javascript jquery jquery-plugins jquery-events


【解决方案1】:

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

根据你的代码:

this 指的是li,而$('strong', li) 正在搜索&lt;strong&gt;,该li 标记内。

这个语句也可以写成:

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

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

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

For more see here

【讨论】:

    【解决方案2】:

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

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

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

    希望对您有所帮助。

    【讨论】:

    • 非常感谢您的支持。真的是一个很好的答案:-)
    猜你喜欢
    • 2012-06-10
    • 2013-05-17
    • 1970-01-01
    • 2021-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-25
    • 2020-02-07
    相关资源
    最近更新 更多