jstree:无法通过属性找到元素
jstree: Cannot find element via an attribute
我正在尝试根据我创建的属性 (db-id) select 一个节点,但是我已经测试了很多选项,但我仍然没有得到该节点。即使试图通过标签 "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 为空。好像是因为生成了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>
** 更新**
上面的树是我测试的例子。
在没有 $('#jstree').jstree() 的情况下使用!!!...
x= $('#jstree').find("li[db-id='1462']");
alert(x[0].id);
但使用 $('#jstree').jstree() 进行初始化,上面的代码仅适用于第一级,但对其余级别不再有效。话虽如此,在示例中,db-id="1459" 会起作用,但 db-id="1460" 不会起作用!!!
提前致谢!
jsTree 不会初始化 DOM 中的所有节点。
只有第一层,打开父节点后DOM会加载一个子节点
首先你只能得到ID 1459,如果你打开它,那么你可以得到ID 1459、1460和1461。如果你想改变CSS,你可以使用open_node.jstree 事件:
$('#jstree').bind("open_node.jstree", function (event, data) { ... }).jstree();
我正在尝试根据我创建的属性 (db-id) select 一个节点,但是我已经测试了很多选项,但我仍然没有得到该节点。即使试图通过标签 "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 为空。好像是因为生成了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>
** 更新**
上面的树是我测试的例子。
在没有 $('#jstree').jstree() 的情况下使用!!!...
x= $('#jstree').find("li[db-id='1462']");
alert(x[0].id);
但使用 $('#jstree').jstree() 进行初始化,上面的代码仅适用于第一级,但对其余级别不再有效。话虽如此,在示例中,db-id="1459" 会起作用,但 db-id="1460" 不会起作用!!!
提前致谢!
jsTree 不会初始化 DOM 中的所有节点。 只有第一层,打开父节点后DOM会加载一个子节点
首先你只能得到ID 1459,如果你打开它,那么你可以得到ID 1459、1460和1461。如果你想改变CSS,你可以使用open_node.jstree 事件:
$('#jstree').bind("open_node.jstree", function (event, data) { ... }).jstree();