2009-07-03 7 views
6

Używam wtyczki JQuery Treeview do wyświetlania niektórych danych. Zasadniczo chciałbym dodać zdarzenie click do dziecka < li> elementy, które kopiują swój innerhtml do innego div na stronie. Nie udało mi się jednak przypisać zdarzenia kliknięcia do tych elementów < li>.Przypisywanie zdarzeń kliknięcia do < li > w JQuery Treeview

Mamy nadzieję, że ktoś wcześniej podszedł do tego terenu i może udzielić pomocy.

Dzięki.

+0

próbowałeś tylko: (” #nameOfLi "). click (function() {alert ('foo');}) ;? – Peter

+1

tak - Wydaje się, że nie załącza on kliknięcia nawet dla mnie. Ten sam kod spowoduje dołączenie zdarzenia kliknięcia do elementów w dowolnym miejscu na stronie poza widokiem drzewa (oczywiście). – WorkingWeb

+0

Czy możesz opublikować fragment kodu? – Peter

Odpowiedz

6

Używanie znaczników z przykładu na http://docs.jquery.com/Plugins/Treeview:

$("span.file, span.folder", "#example li") 
    .click(function() { alert($(this).text()); }); 

prace. Obsługa kliknięć na elementach LI samo wychwytuje skurcze gałęzi i ekspansję.

+1

Dzięki, twój komentarz uświadomił mi, że to był sposób, w jaki budowałem widok drzewa (przez JSON i dodawanie gałęzi), który był przyczyną problemu. Byłem w stanie rozwiązać mój problem przez przypisanie zdarzenia kliknięcia zaraz po dodaniu dynamicznie generowanych gałęzi. – WorkingWeb

6

Można użyć konstrukcji .live. Dla mnie to działa:

$('li','ul#menu').live('click', function(){ 
    alert('Click event');  
}); 
0

Spróbuj tak

$('li:not(:has(>ul))', 'ul#menu').live('click', function() {    
       alert($(this).text()); 
      }); 

będzie dodać zdarzenie click do liści węzła tylko (nie węzeł główny)

1
<li onclick="selectNode(event, this);" id="${node2.nodeId}" class="closed"> 
    <span class="folder"> ${node2.name} </span> 
</li> 




function selectNode(event, nodeHtmlEl) { 
    // IE 
    if ($.browser.msie) { 
     window.event.cancelBubble = true; 
    } 
    if(event.stopPropagation) { 
     event.stopPropagation(); 
    } 
    alert("selectNode ID: " + $(nodeHtmlEl).attr("id")); 
}