2011-02-02 7 views
7

मुझे पता चला है कि यूई प्लगइन का उपयोग पेड़ नोड्स के लिंक को तोड़ देता है। यह कुछ भी नया नहीं है, मुझे इस समस्या के संदर्भ कहीं और मिल गए हैं। पहला कारण jquery सत्यापन प्लगइन के v1.6 के साथ एक समस्या थी। मैं उस प्लगइन का उपयोग नहीं कर रहा हूं, इसलिए यह कारण नहीं हो सकता है।जस्ट्री नोड्स काम नहीं करते हैं जब यूई प्लगइन का उपयोग किया जाता है

मुझे एक अच्छी पोस्टिंग भी मिली है जो jstree-clicked कक्षा को <a> टैग में जोड़ने के कुछ तरीकों का वर्णन करती है। यह आशाजनक लग रहा था, लेकिन जब मैंने कोशिश की तो मुझे कोई फर्क नहीं पड़ता।

<div id="treediv"> 
    <ul> 
     <li id="page1"><a href="http://www.yahoo.com" class="jstree-clicked">YAHOO!</a></li>   
    </ul> 
</div> 
<script type="text/javascript" class="source"> 
$(function() { 

$("#treediv") 
    .jstree({ 
     "core" : { 
      "animation" : 0 
     }, 
     "themes" : { 
      "theme" : "classic" 
     }, 
     "plugins" : [ "themes", "html_data", "cookies", "ui" ] 
    }); 
}); 
</script> 

अगर मैं ui प्लगइन बाहर ले, तो लिंक पर क्लिक अपेक्षा के अनुरूप yahoo.com करने के लिए मुझे ले जाता है: यहाँ एक बहुत ही सरल उदाहरण है। क्या किसी के पास कोई विचार है?

उत्तर

10

मुझे लगता है कि मैं found the answer on the jstree discussion group हूं। मेरा मानना ​​है कि ui प्लगइन नोड्स को "चयनित" होने की अनुमति देता है, लेकिन क्लिक एंकर टैग से गुजरता नहीं है। इसलिए, जब भी कोई नोड चुना जाता है तो मुझे निष्पादित करने के लिए एक फ़ंक्शन बाध्य करना होता है। मैं निम्नलिखित की तरह एक .bind के साथ इस पूरा किया:

.bind("select_node.jstree", function (e, data) { 
    var href = data.rslt.obj.children("a").attr("href"); 
    // this will load content into a div: 
    $("#contents").load(href); 
    // this will follow the link: 
    document.location.href = href; 
    }) 

एक तरफ लाभ के रूप में, इस उदाहरण भी मुझे दिखाया है कि कैसे आसान यह एक पेड़ नोड पर क्लिक करें और एक और div में गतिशील सामग्री दिखाने के लिए है। उदाहरण के लिए, मान लीजिए पेड़ नोड के रूप में निम्नानुसार परिभाषित किया गया था (html_data jstree प्लगइन और struts2 का उपयोग कर): उस वृक्ष नोड पर

<li id="node1"> 
    <a href="do-something.action">Do Something</a> 
</li> 

क्लिक करने का कारण होगा do-कुछ कार्रवाई निष्पादित किया जाना है, और परिणाम में प्रदर्शित किया जाएगा आईडी "सामग्री" के साथ div।

+1

+1! धन्यवाद जेफ, यह बहुत अच्छा काम करता है। –

+0

@ मेट्रो Smurf मुझे एक ही समस्या है, jtree को छोड़कर एक फ्रेमसेट का हिस्सा है। यह lefthandsidepane में रहता है और मैं लिंक की सामग्री के साथ righthandside फलक को प्रतिस्थापित करने के लिए नोड पर क्लिक करना चाहता हूं। इस फिक्स के साथ यह lefthandside को प्रतिस्थापित करता है, भले ही एचटीएमएल के बिना एचटीएमएल लिंक सही ढंग से काम करते हैं। कोई विचार ? –

+0

@ पॉल टायलर - मुझे नहीं पता; मैंने केवल जवाब साफ़ कर दिया। जेफ पूछने वाला एक होगा। –

संबंधित मुद्दे