jstree:无法通过属性找到元素

时间:2015-02-16 15:54:38

标签: jquery jstree

我正在尝试根据我创建的属性(db-id)选择节点但是我已经测试了很多选项但仍然没有得到节点。即使试图通过标签“li”的“id”获取节点,它仍然无法工作。

$(document).ready(function(){
$('#jstree').jstree();

$('#jstree').on('ready.jstree', function (e, data) {
    x= $('#jstree').jstree(true).get_node('j1_1');
    alert(x[0].id);
...

在我的例子中,x为null。似乎因为生成了jstree,它无法识别每个“li”的动态属性。当然我尝试了更多选项,如:

node = $('#jstree').find("li[id='j1_1']").closest('li');
node = $('#jstree').find("li[id='j1_1']");
node = $('#jstree.jstree-node').find("li[id=j1_1]");

但没有好结果。下面是生成的jstree的一个小结构。

<div id="jstree">
<ul>
    <li db-id="1459">AAA004 - low-frequency amplifier
        <ul>
            <li db-id="1460">AAA005 - power amplifier</li>
            <li db-id="1461">AAA006 - voltage amplifier
                <ul>
                    <li db-id="1462">AAA007 - differential amplifier
                        <ul>
                            <li db-id="1463">AAA008 - operational amplifier</li>
                            <li db-id="1464">AAA009 - AC-coupled amplifier</li>
                        </ul>
                    </li>
                    <li db-id="1465">AAA010 - single-sided amplifier</li>
                </ul>
            </li>
        </ul>
    </li>
    <li db-id="1466">AAA011 - radio frequency amplifier</li>
    <li db-id="1467">AAA012 - wideband amplifier</li>
</ul>
</div>

**更新**

上面的树是我正在测试的一个例子。

使用no $('#jstree')。jstree()WORKS !!! ...

x= $('#jstree').find("li[db-id='1462']");
alert(x[0].id);

但是使用$('#jstree')。jstree()初始化,上面的代码只适用于第一级,但其余的不再适用。话虽如此,在示例中,db-id =“1459”将起作用但db-id =“1460”不会!!!

提前致谢!

1 个答案:

答案 0 :(得分:2)

jsTree不会初始化DOM中的所有节点。 只有第一级,一个子将在打开父节点后加载到DOM中。

首先你只能得到ID 1459,如果你打开它,那么你可以得到ID 1459,1460和1461.如果你想改变CSS,例如,你可以使用open_node.jstree事件:

$('#jstree').bind("open_node.jstree", function (event, data) { ... }).jstree();