2011-01-28 18 views
12

कैप्चर करें मैं पूरी तरह से jQuery और jstree के लिए नया हूँ। मैं jstree का उपयोग कर रहा हूं और एक्सएमएल का उपयोग कर डेटा पॉप्युलेट कर रहा हूं। लेकिन प्रत्येक नोड के लिए ईवेंट कैप्चर करना चाहेगा चाहे उनके आईडी के साथ चेक किया गया हो या नहीं। मैंने jstree के प्लगइन्स एपीआई जैसे change_state(), check_node() या select_node() का उपयोग करने का प्रयास किया लेकिन यह काम नहीं कर रहा है। इसके अलावा मैं आगे के प्रसंस्करण के लिए सभी चयनित नोड्स डेटा को सरणी में प्राप्त करना चाहता हूं..क्या कोई मदद कर सकता है?Jquery Jstree चेकबॉक्स घटनाएं

धन्यवाद ...

+0

जो jstree प्लगइन आप उपयोग कर रहे हैं? – Vivek

+0

@ विवेक शायद jquery.jstree। @ user529011 क्या आप अपने उपयोग के कोड का उदाहरण दे सकते हैं। शायद http://www.jsfiddle.net – Raynos

+0

jquery jstree v.1.0-version – user529011

उत्तर

3

jstree के वर्तमान संस्करण check_node.jstree बंधन के साथ एक समस्या है लगता है। इसके अलावा select_node.jstree बाध्यकारी वर्तमान रिलीज के साथ सक्रिय चेकबॉक्स प्लगइन के साथ आग नहीं है।

HERE पर जाएं जहां आप निर्माता प्रश्न पूछ सकते हैं या यहां तक ​​कि पहले से पूछे गए प्रश्न भी देख सकते हैं।

$.jstree._reference("#demo").get_selected(); के लिए के रूप में आप $.jstree._reference("#demo").get_selected().each(function(index,element){alert($(element).attr("id"));});

+1

बस एक त्वरित नोट - jstree का नया संस्करण "संदर्भ का उपयोग करता है "(कोई अग्रणी अंडरस्कोर नहीं)। –

22

मैं jstree प्लगइन की तरह का उपयोग करके प्रत्येक आइटम की आईडी प्राप्त कर सकते हैं, लेकिन यह अच्छी तरह से प्रलेखित नहीं कर रहा है, न ही यह कहते हैं कि के अनुरूप बनाया गया है, प्लग इन का विकास jQuery ui मानकों। मैंने जो कुछ करने की कोशिश कर रहे हैं उसे पूरा करने के लिए मैंने 1.0rc2 का उपयोग किया है।

आपको जेस्ट्री को तुरंत चालू करने से पहले "लोड" ईवेंट को बांधना होगा, इसलिए मुझे लगता है कि यह "change_state" ईवेंट के साथ समान है। दूसरी बात यह है कि "change_state" चेक बॉक्स के कारण सिर्फ एक बदलाव से अधिक है। उदाहरण के लिए जब आप नोड का विस्तार करते हैं तो यह भी आग लग जाएगा (लेकिन किसी कारण से नहीं, तो पतन नहीं)। उस ने कहा, मैं चेकबॉक्स परिवर्तन से अवांछित घटनाओं को आजमाने और फ़िल्टर करने के लिए "change_state" हैंडलर में कुछ क्लोजी जांच कर रहा हूं। हैंडलर दोहन के लिए न्यूनतम कोड

$("#treeElement").bind("change_state.jstree", function (e, d) { 
    var tagName = d.args[0].tagName; 
    var refreshing = d.inst.data.core.refreshing; 
    if ((tagName == "A" || tagName == "INS") && 
     (refreshing != true && refreshing != "undefined")) { 
    //if a checkbox or it's text was clicked, 
    //and this is not due to a refresh or initial load, run this code . . . 
    } 
}); 

आपका क्लिक किया तत्व तो d.rslt है और आप एक वस्तु उप नोड्स जाँच कर रहे हैं शामिल करने के कारण बस तत्व के लिए d.inst.get_checked() के साथ की जाँच कर सकते हैं पाने के लिए आइटम क्लिक किया है, या d.inst.get_checked(d.rslt) है। नोड्स को संसाधित करने के लिए jquery's .each फ़ंक्शन का उपयोग करें।

+0

मेरा दिन बचाया ... –

+0

एक स्पष्ट घटना एपीआई के बिना डेटा पेड़ के लिए चेकबॉक्स प्लगइन लिखने का क्या मतलब है ?! एक निरीक्षण की तरह लगता है! – rgvcorley

+1

मैं इसे वापस लेता हूं - 'check_node.jstree' और' uncheck_node.jstree' ईवेंट ट्रिगर किए जाते हैं, यह सिर्फ jstree के लिए प्रलेखन में नहीं है। – rgvcorley