जेएसटी्री बहुत अच्छा है लेकिन इसका दस्तावेज बल्कि घना है। आखिर में मैंने इसे समझ लिया, इसलिए इस धागे में चलने वाले किसी के लिए समाधान यहां है।
सबसे पहले, आपको प्रश्न में पेड़ पर open_node ईवेंट को बांधना होगा।
$("tree").jstree({"themes":objTheme,"plugins":arrPlugins,"core":objCore}).
bind("open_node.jstree",function(event,data){closeOld(data)});
यानी आप पेड़दृश्य उदाहरण को कॉन्फ़िगर करते हैं और फिर open_node ईवेंट को बाध्य करते हैं। यहां मैं क्लोज़ल्ड फ़ंक्शन को नौकरी करने के लिए बुला रहा हूं जो मुझे चाहिए - किसी अन्य नोड को बंद करें जो खुला हो सकता है। समारोह इतना
function closeOld(data)
{
var nn = data.rslt.obj;
var thisLvl = nn;
var levels = new Array();
var iex = 0;
while (-1 != thisLvl)
{
levels.push(thisLvl);
thisLvl = data.inst._get_parent(thisLvl);
iex++;
}
if (0 < ignoreExp)
{
ignoreExp--;
return;
}
$("#divElements").jstree("close_all");
ignoreExp = iex;
var len = levels.length - 1;
for (var i=len;i >=0;i--) $('#divElements').jstree('open_node',levels[i]);
}
यह सही ढंग से नोड है कि बस का विस्तार किया गया की नेस्टिंग स्तर पर ध्यान दिए बिना अन्य सभी नोड्स के तह संभाल लेंगे तरह चला जाता है।
कदम की एक संक्षिप्त विवरण शामिल
- पहले हम वापस treeview कदम जब तक हम एक शीर्ष स्तर नोड तक पहुँचने (-1 jstree बात में) यह सुनिश्चित करें कि हम हर पूर्वज नोड प्रक्रिया में सामना करना पड़ा रिकॉर्ड बनाने सरणी स्तरों
- में अगला हम treeview
- में सभी नोड्स अब हम स्तरों सरणी में nodees के सभी फिर से विस्तार करने के लिए जा रहे हैं पतन। ऐसा करने के दौरान हम नहीं चाहते कि यह कोड फिर से निष्पादित हो। ऐसा होने से हम स्तरों
- अंत में वैश्विक ignoreEx नोड्स की संख्या के चर सेट है कि रोकने के लिए, हम स्तरों में नोड्स के माध्यम से कदम और ऊपर प्रत्येक उनमें से एक