2010-09-14 3 views
2

Я работаю с jstree, и я хотел бы знать, как скрыть/показать узлы, если это возможно. Я дал элементам списка идентификатор «cat», чтобы выбрать их с помощью jquery, но это не работает.jsTree show/hide nodes

Вот код.

HTML:

<div class="resultsContent"> 

    <div class="demo" id="demo_1"> 

    <ul> 

    {% for ipc in ipcs %} 

     {% ifequal ipc.back_list 1 %} 

      </ul></li> 

     {% endifequal %}  

     {% ifequal ipc.kind "c" %} 

     <li id="{{ ipc.symbol }} cat" rel="node-type"> 
       {% else %} 
        <li id="{{ ipc.symbol }} cat" rel="node-type"> 
      {% endifequal %} 
    {% endfor %} 
    </ul> 

</div> 

</div> 

сценарий:

jQuery('#demo_1') 

    .jstree({ 

     plugins : [ "themes", "html_data", "checkbox" ], 

     themes : { theme: "default", dots : false, icons : false },   

     core : { "initially_open" : [ "{{ top_symbol }}" ] }, 

    }) 

$("#cat").slice(5, 10).hide(); //Hide some nodes 

ответ

3

кажется в вашем коде, вы генерирующий Li элементы с идентификатором сочиненного значением IPC Symbol плюс черного пространством, плюс слово «кошка».

<li id="{{ ipc.symbol }} cat" rel="node-type"> 

Но ваш селектор пытается получить элемент, идентификатор именно «кошка»

$("#cat").slice(5, 10).hide(); //Hide some nodes 

Может быть, вы могли бы использовать другой селектор JQuery. К примеру, Attribute Contains Selector:

$("li[id*='cat']").slice(5, 10).hide(); //Hide nodes with the string 'cat' 

Или Attribute Contains Word Selector, более уместно в данном случае (потому что вы ищете целое слово):

$("li[id~='cat']").slice(5, 10).hide(); //Hide nodes containing the word 'cat' 
+0

Спасибо Tomas, я попробовал это, но это, кажется, положив «cat» в id конфликтует с jstree. Мне придется по-другому выбрать элементы li. – mxm

+0

В этом случае попробуйте с помощью Child Selector (http://api.jquery.com/child-selector/): выберите все элементы LI в разделе «demo_1» DIV: $ ('# demo_1> li') –

+0

Это сработало !, gracias Tomás !. – mxm