gpt4 book ai didi

jquery - 在 jQuery 中创建一个 "Collection of Collections"

转载 作者:行者123 更新时间:2023-12-01 03:09:44 25 4
gpt4 key购买 nike

我有一些大致如下的 HTML:

<div id="x">
<div class="equal-height"></div>
<div class="equal-height"></div>
<div class="equal-height"></div>
</div>

<div>
<div id="y>
<div class="equal-height"></div>
<div class="equal-height"></div>
</div>
</div>

我不确定这是否可行,但我想创建一个返回“集合的集合”的 jQuery 表达式。在我的示例中,将有一个包含两个元素的“外部集合”。第一个元素是 3 div 的集合嵌套在 <div id="x"> 中的元素而第二个元素是两个 div 的集合<div id="y"> 内的元素.

换句话说,我想要一个包含兄弟 <div class="equal-height"> 的所有集合的集合。元素。我可以想到一个通用的方法,但它并不漂亮。

我不关心生成的集合是否是数组数组的 jQuery 集合。

我应该在原来的帖子中明确表示我不想对“x”和“y”id 进行硬编码。我只想要class="equal-height"的所有家长以及equal-height children 自己。

最佳答案

没有任何内置的 jQuery 方法可以完成您所要求的操作,因为所有 jQuery 对象都是对象的平面列表,而不是 2D 数组。

对于适用于文档中任何位置的 .equal-height 元素的通用答案,我能想到的最简单的事情就是获取所有 .equal-height元素,然后通过检查父数组将它们拆分为子数组:

var result = [];
$(".equal-height").each(function(index, element) {
if (!result.length || element.parentNode !== result[result.length - 1][0].parentNode) {
result.push([element]);
} else {
result[result.length - 1].push(element);
}
});

// display results
document.write("[" + result.map(function(item) {
return JSON.stringify(item.map(function(obj) {
return obj.id;
}));
}) + "]");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="x">
<div id="a" class="equal-height"></div>
<div id="b" class="equal-height"></div>
<div id="c" class="equal-height"></div>
</div>

<div>
<div id="y">
<div id="d" class="equal-height"></div>
<div id="e" class="equal-height"></div>
</div>
</div>

而且,这是另一个方案,它获取唯一父元素的列表,然后为每个父元素构建与选择器匹配的子元素列表:

var result = $('.equal-height').parent().get().map(function(item) {
return $(item).children(".equal-height").get();
});

// display results
document.write("[" + result.map(function(item) {
return JSON.stringify(item.map(function(obj) {
return obj.id;
}));
}) + "]");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="x">
<div id="a" class="equal-height"></div>
<div id="b" class="equal-height"></div>
<div id="c" class="equal-height"></div>
</div>

<div>
<div id="y">
<div id="d" class="equal-height"></div>
<div id="e" class="equal-height"></div>
</div>
</div>

<小时/>

如果您想将 xy 元素的知识硬编码为父元素,您可以简单地执行以下操作:

var result = [$("#x .equal-height").get(), $("#y .equal-height").get()];

或者相同的概念可以这样写:

var result = ["#x", "#y"].map(function(item) {
return $(item + " .equal-height").get();
});

关于jquery - 在 jQuery 中创建一个 "Collection of Collections",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34346225/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com