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

我有一个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,然后在必要时递归处理其子元素.这样可以避免创建可能较大的数组.

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

相关文章

1.第一步 设置响应头 header('Access-Control-Allow...
$.inArray()方法介绍 $.inArray()函数用于在数组中搜索指定的...
jquery.serializejson.min.js的妙用 关于这个jquery.seriali...
JS 将form表单数据快速转化为object对象(json对象) jaymou...
jQuery插件之jquery.spinner数字智能增减插件 参考地址:http...