Узлы Jstree не работают, когда используется плагин пользовательского интерфейса - PullRequest
7 голосов
/ 03 февраля 2011

Я обнаружил, что использование плагина пользовательского интерфейса разрывает ссылки на узлы дерева. В этом нет ничего нового, я нашел ссылки на эту проблему в другом месте. Первой причиной была проблема с v1.6 плагина проверки jquery. Я не использую этот плагин, так что это не может быть причиной.

Я также нашел хорошую публикацию, описывающую несколько способов добавления jstree-clicked класса в тег <a>. Это выглядело многообещающе, но когда я попробовал это, я не заметил никакой разницы. Вот очень простой пример:

<div id="treediv">
    <ul>
        <li id="page1"><a href="http://www.yahoo.com" class="jstree-clicked">YAHOO!</a></li>        
    </ul>
</div>
<script type="text/javascript" class="source">
$(function () {

$("#treediv")
    .jstree({
        "core" : {
            "animation" : 0
        },
        "themes" : {
            "theme" : "classic" 
        },
        "plugins" : [ "themes", "html_data", "cookies", "ui" ] 
    });
});
</script>

Если я отключу плагин пользовательского интерфейса, то, нажав на ссылку, я попаду на yahoo.com, как и ожидалось У кого-нибудь есть идеи?

1 Ответ

10 голосов
/ 03 февраля 2011

Я думаю, что нашел ответ в дискуссионной группе jstree .Я считаю, что плагин пользовательского интерфейса позволяет "выбирать" узлы, но щелчок не проходит через тег привязки.Итак, я должен связать функцию, которая будет выполняться всякий раз, когда выбран узел.Я выполнил это с помощью .bind, как показано ниже:

  .bind("select_node.jstree", function (e, data) {
    var href = data.rslt.obj.children("a").attr("href");
    // this will load content into a div:
    $("#contents").load(href);
    // this will follow the link:
    document.location.href = href;
  }) 

В качестве дополнительного преимущества этот пример также показал мне, как легко нажать на узел дерева и показать динамическое содержимое в другом div.Например, предположим, что узел дерева был определен следующим образом (с использованием плагина hstml_data jstree и struts2):

<li id="node1">
    <a href="do-something.action">Do Something</a>
</li>

Нажатие на этом узле дерева приведет к выполнению действия «что-то», и результатыотображается в div с идентификатором «содержимое».

...