2010-08-17 55 views
0

我想讓JsTree在我的MVC應用程序中獲取文件夾視圖。如果我在頁面視圖中使用現有的靜態html ul列表,一切工作正常。但我需要動態獲取UL列表,用於JsTree的文檔中描述的,所以我想在Ajax調用:MVC中的JsTree jQuery插件中的Ajax調用

<script type="text/javascript"> 
     var url; 
     $(document).ready(function() { 
      $("a").click(function() { 
       url = "?url=" + $(this).attr("rel"); 
       alert(encodeURI(url)); 
      }); 
     }); 

     $(function() { 

      $("#demo2").jstree({ 
       "html_data": { 
        "ajax": { 
         "url": "/Home/Directories/" 
        } 
       }, 
       "ui": { 
        "select_limit": 2, 
        "select_multiple_modifier": "alt", 
        "selected_parent_close": "select_parent", 
        "initially_select": ["phtml_2"] 
       }, 
       "themes": { 
        "theme": "classic", 
        "dots": true, 
        "icons": true 
       }, 
       "plugins": ["themes", "html_data", "ui"] 
      }); 
     }); 

    </script> 

正如你所看到的,我想有設置所有的點擊事件「一」這個列表的元素。同樣,如果ul列表直接寫入div id =「demo2」,這可以正常工作。但是當我嘗試動態獲取列表時,這些動態創建的元素上的點擊事件不起作用。什麼都沒發生。我已經檢查了html的結果,就我所見,一切都很好。就好像沒有設置點擊事件,因爲點擊事件設置時,動態a元素不存在,可以這樣嗎?如果是這樣,我能做些什麼呢?我需要能夠在動態創建的元素上觸發事件...我已經查閱了JsTree文檔,但它非常簡單,基本上只是列出事件等,而不顯示如何使用它們。我猜如果我可以有一個回調,以便只有在創建了樹才能使其工作的情況下設置click事件,但我無法弄清楚如何爲此編寫回調。 (我對jquery非常陌生,並且對這個腳本感到很頭痛,但我需要它,所以我一直在努力學習)。

回答

4

實際上,我通過與文檔更多的努力找到了答案。我懷疑這些文檔會更容易理解,一旦我對jQuery有了更多的瞭解......無論如何,如果其他人有興趣,這就是我必須做的事情來綁定事件,以便它在樹時觸發已創建:

$("#demo2") 
     .bind("loaded.jstree", function() { 
      $("a").click(function() { 
       url = "?url=" + $(this).attr("rel");      
       alert(encodeURI(url)); 
      }); 
     }).jstree(//...[the rest of the function the same as before]...