所以,我有我的JStree內置了<div id="navtree">
的阿賈克斯負荷後選擇在我的JStree一個節點,當選擇一個節點我通過阿賈克斯()方法進入另一個加載一些內容<div id="tabs">
頁面其他地方:我不能在另一個DIV
$("#navtree")
.jstree({
"core" : { "animation" : 0 },
"themes" : { "theme" : "classic", "dots" : true, "icons" : false },
"ui" : { "select_limit" : 1 },
"plugins" : [ "themes", "html_data", "ui" ]
})
.bind("select_node.jstree", function (event, data) {
data.inst.toggle_node(data.rslt.obj);
$("#main").css("display","none");
var identifier = $.trim(data.rslt.obj.children("a").text());
$.ajax({
data : {target : identifier},
type : "POST",
url : data.rslt.obj.children("a").attr("href"),
success : function(response) {
$("#tabs").html(response);
$("#tabs").tabs();
$("#main").css("display","inline");
}
});
$("#searchinput").val("") .focus();
return false;
});
這一切都工作得很好。
包含在這個新加載的內容中的是一些<a class="searchlink">
標籤,點擊後,我想以編程方式在我的jstree中選擇一個節點。
使用。對()方法,我可以觸發一個警報,當我點擊這些<a class="searchlink">
標籤:
$("body").on("click", "a.searchlink", function(event) {
event.preventDefault();
var $nodeid = "#" + $(this).text().replace(/\./g, "_");
alert($nodeid);
$("#navtree").jstree("select_node", $nodeid);
//$(nodeid).trigger("select_node.jstree");
});
因爲。對()傳播到添加到頁面,警告未來所有元素()顯示我想要選擇的節點的正確ID。但是,無論我如何嘗試這樣做(我試過所有我能想到的),我無法讓它在現有jstree的節點上觸發「select_node」事件,而且我懷疑它是與事實,即這些<a class="searchlink">
標籤被通過阿賈克斯添加到頁面的jstree被實例化()調用之後長。
最新資訊:
Firefox網頁開發者控制檯顯示我的錯誤「$(」#導航樹「)。jstree是不是一個函數」我每次點擊一個<a class="searchlink">
時間經阿賈克斯加載()。
如果警報工作,受委託的綁定功能工作。換句話說,它不是由Ajax添加的「a.searchlink」。只留下$ nodeid聲明或'.jstree'行。 –
是的,這也正是爲什麼我認爲也許是阿賈克斯()調用以某種方式改變了我的範圍或命名空間或東西,例如我的jstree不再是可選的。 .jstree語法應該是正確的,因爲我已經使用與jstree相同的div的元素對其進行了測試,並且未通過.ajax()加載,並且其行爲與預期相同。事實上,我想要做的和[Core文檔頁面上的第一個演示](http://www.jstree.com/documentation/core#demos)之間唯一的真正區別是.ajax()調用。 – user1415730
要知道,你的名爲「$ NODEID」變量是一個字符串,而不是一個jQuery對象...的註釋行$(NODEID),因爲變量名是$ NODEID,不NODEID會失敗......我提到這一點,因爲變量如果你認爲它是一個jQuery對象,命名是令人困惑的。 –