【问题标题】:Add element's children to jQuery set without leaving the chain将元素的子元素添加到 jQuery 集合而不离开链
【发布时间】:2011-05-10 08:21:23
【问题描述】:

是否有可能在不离开链的情况下将 jQuery 集合中元素的子元素添加到集合中?

即,with 离开它看起来像这样:

var set = $('.some-elements');
set.add('*', set);
// or immediate ones only
set.add(set.children());

我正在寻找一种不创建临时 set 变量的方法来执行这些操作:

$('.some-elements').jqMagic("*");

(当然可以为此编写一个“jqMagic”插件。我只是想确定一下,jQuery 核心中没有这个功能。)

【问题讨论】:

  • 你会在某些活动中添加孩子吗?喜欢clickchange 或waterver。如果是,请查看delegate
  • 你可以用set 开始链(我不会为了节省一行代码而创建一个插件)。唯一的另一种方法是再次使用$('.some-elements')...
  • 更正:这不是唯一的方法 ;) 仅当您朝一个方向思考时,即首先获取“父集”然后添加子集。但它的工作原理是先选择孩子,然后再次添加父母,正如@Nathan 所示......

标签: jquery add composition traversal


【解决方案1】:

我相信AndSelf 会让你做你想做的事。

更新示例:

给定以下 html:

<div id="1" class="testdiv">
   <a href="#">test a</a>
   <a href="#">test b</a>
</div>


<div id="2" class="testdiv">
    <a href="#">test c</a>
    <a href="#">test d</a>
</div>

这段代码只给子项(在本例中为锚标记)一个红色边框:

<script language="javascript" type="text/javascript">

    $('.testdiv').children().css('border','solid 1px red');

</script>

虽然此代码(使用 andSelf())在元素列表中包含父 div,因此同时选择父 div 和子 div - 从而根据您的要求提供合并集:

<script language="javascript" type="text/javascript">

    $('.testdiv').children().andSelf().css('border','solid 1px red');

</script>

【讨论】:

  • @Felix Kling - 提供示例:)
  • 谢谢...我的想法被扭曲了,这就是为什么我看不出它应该如何工作...但是退后一步有时会产生奇迹;)(我写了另一条评论,之前我删除了...)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-12
  • 2019-10-17
  • 2021-04-16
  • 1970-01-01
相关资源
最近更新 更多