Как сделать гиперссылки в плагине dynaTree jQuery кликабельными?

В настоящее время я использую плагин dynaTree jQuery для рендеринга дерева.

<div id="tree" style="height:100px;">

<ul class="expanded">

    <li class="expanded" id="shtml_1" >
        <a class="ajaxify" href="jsTree.html" >Root node 1</a>
        <ul>
            <li id="shtml_2">
                <a href="#">Child node 1</a>
                <ul>
                <li id="a"><a href="#">Child node 1-1</a></li>
                <li id="x"><a href="b">Child node 1-2</a></li>
                </ul>
            </li>               
            <li id="c"><a href="#">Child node 2</a></li>
        </ul>
    </li>
    <li id="shtml_4">
        <a href="#">Root node 2</a>
    </li>
</ul>

Javascript -

  $('.ajaxify').ajaxify({
  target: '#container'
  });

    $(function(){
    $("#tree").dynatree({
      title: "Sample Theming",
      // Image folder used for data.icon attribute.
      imagePath: "skin-custom/",
      onSelect: function(node) {
        alert ("You selected " + node);
      }
    });
  });

Теперь я хочу

  • Используйте плагин jQuery Ajaxify (http://max.jsrhost.com/ajaxify/demo.php), чтобы при нажатии пользователем любого узла выполнялся вызов ajax, а результаты загружались в div.

Or

  • Свяжите теги привязки с помощью jquery, чтобы я мог делать запросы ajax onclick.

Теперь всякий раз, когда я использую dynaTree, он переопределяет поведение по умолчанию и предотвращает возможность щелчка по тегу привязки. Любые мысли о том, как это можно сделать?


person Pushkar    schedule 20.05.2011    source источник


Ответы (1)


Dynatree по умолчанию удалит теги <a>, поэтому, возможно, будет проще реализовать обработчик onActivate:

onActivate: function(node) { 
    if( node.data.href ){
        // use href and target attributes:
        window.location.href = node.data.href; 
//      window.open(node.data.href, node.data.target);
//      $("#div").load(node.data.href);
    }
}

Начиная с версии 1.1.2, Dynatree будет использовать атрибуты href и target непосредственно из тега <a>:

<li id="x"><a href="b">Child node 1-2</a></li>

В более старых версиях вы должны установить href следующим образом:

<li id="x" data="href: 'b'"><a href="b">Child node 1-2</a></li>
person mar10    schedule 22.05.2011
comment
Спасибо. Любые мысли, как мы можем интегрировать его с плагином, таким как Ajaxify? - person Pushkar; 22.05.2011
comment
Я никогда не использовал Ajaxify, но заметил демо на их странице («Взаимодействие с другими плагинами» — «Flexigrid»), которое может указывать на подход. - person mar10; 27.05.2011
comment
К сожалению, это не работает с dynaTree. Поэтому мне пришлось вообще отказаться от идеи использования Ajaxify и использовать прямые вызовы ajax в методе onActivate dynaTree. - person Pushkar; 27.05.2011
comment
+1 за комментарий к версии (этот href из тега a не поддерживается в 1.1.1, которого нет в документации). - person matt; 31.08.2011