gpt4 book ai didi

jquery - 如何选择拥有相同ID的每个节点

转载 作者:行者123 更新时间:2023-12-01 01:20:22 26 4
gpt4 key购买 nike

我有一个 Jstree,它包含很多节点,其中一些节点具有相同的 ID。

我想知道,如果有人选择我该如何做
节点之一,它会选择具有相同 id 的每个节点。

我尝试使用

    onselect: function (node) {

但我不知道到底该怎么做,
另外我不知道如何手动选择节点
(因为这一切都是通过 selected: 属性完成的)

最佳答案

IDs must be unique within the document ,所以我假设您需要这样做,因为您从某个地方获取数据并且需要清理它。如果可以的话,请解决问题的根源。

如果不能,您可以循环遍历树中的元素来查找匹配的 ID;像这样的东西:

var theTargetID = /* ...whatever ID you're looking for... */;
$(theTree).find("*").each(function(element) {
if (this.id == theTargetID) {
// it matches the ID
}
});

这将创建一个可能很大的临时数组(匹配树的所有后代元素)。这可能是您最好使用无聊的老式 DOM 遍历而不是 jQuery 的漂亮包装器的地方,因为您正在尝试使用无效的文档结构(多个 ID)执行某些操作。

以下是寻找目标 ID 的原始 DOM 遍历的样子:

function traverse(theTargetID, element) {
var node;

if (element.id == theTargetID) {
// It matches, do something about it
}

// Process child nodes
for (node = element.firstChild; node; node = node.nextSibling) {
if (node.nodeType === 1) { // 1 == Element
traverse(theTargetID, node);
}
}
}

假设 element 参数实际上是一个 DOM 元素(不是 jQuery 对象或文本节点等)。它检查元素的id,然后处理其子元素,如果需要的话会递归地处理。这可以避免创建可能很大的数组。

请注意,我指的是树节点,而不是其中的叶子。您希望在加载树时执行此操作一次,而不仅仅是在选择树中的节点时执行此操作 - 因为您希望尽可能简短地拥有无效结构并主动修复它。

关于jquery - 如何选择拥有相同ID的每个节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2947982/

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