2011-04-19 9 views
6

मैं JQuery UI - Selectable का उपयोग कर रहा हूं। यदि तत्व दबाया गया है तो मैं तत्व को अचयनित करना चाहता हूं और इसे पहले से ही चुना गया है (टॉगल)JQuery UI पर टॉगल कार्यक्षमता को कैसे कार्यान्वित करें?

क्या आप इस कार्यक्षमता को जोड़ने में मेरी सहायता कर सकते हैं कृपया!

+2

क्या इनमें से कोई भी उत्तर आपकी मदद करता है? –

+1

यहां एक तरीका है जो बहुत अच्छा काम करता है - यह डिफ़ॉल्ट बना देता है जैसे सीटीएल कुंजी दबाया गया था: http://stackoverflow.com/a/12592042/1017650 – Symmetric

उत्तर

20
क्योंकि सभी वर्ग कॉलबैक की

, तो आप इस की तुलना में काफी बेहतर करने के लिए नहीं जा रहे हैं:

$(function() { 
     $("#selectable").selectable({ 
      selected: function (event, ui) { 
       if ($(ui.selected).hasClass('click-selected')) { 
        $(ui.selected).removeClass('ui-selected click-selected'); 

       } else { 
        $(ui.selected).addClass('click-selected'); 

       } 
      }, 
      unselected: function (event, ui) { 
       $(ui.unselected).removeClass('click-selected'); 
      } 
     }); 
    }); 
+2

यह एक बहुत ही उपयोगी उत्तर है। निश्चित नहीं है कि इसे उत्तर के रूप में क्यों चिह्नित नहीं किया गया है? निश्चित रूप से मेरे लिए काम किया। –

+2

क्या यह घटनाओं को आग लगाने जा रहा है जैसा आप उम्मीद करेंगे? मुझे लगता है कि removeClass अचयनित घटना को आग नहीं जा रहा है। –

+0

यह एक आइटम को टॉगल करने के लिए काम करता है। हालांकि यह पहले से ही कई आइटम चुने गए हैं - इसलिए एकाधिक आइटम टॉगल करने के लिए काम नहीं कर रहे हैं। – lubosdz

1

यदि आप क्लिक करते समय Ctrl कुंजी दबा रहे हैं तो आपके पास पहले से ही jQuery UI के साथ कार्यक्षमता है।

यदि आपको वास्तव में डिफ़ॉल्ट कार्यक्षमता के रूप में इसकी आवश्यकता है, तो आपको चयन करने योग्य उपयोग करने की आवश्यकता नहीं है, आप इसे सरल ऑनक्लिक हैंडलर के रूप में कर सकते हैं, जैसे कि नोलाबेल ने सुझाव दिया था।

या ... आप jquery.ui.selectable.js संपादित कर सकते हैं और एक विकल्प जोड़ सकते हैं जो आपको चाहिए। बहुत कठिन नहीं होना चाहिए, वहां 4 स्थान हैं जहां event.metaKey चेक किया गया है, सुनिश्चित करें कि आपका विकल्प सेट है या नहीं, बस कोडपैथ चलाएं जैसे कि event.metaKey हमेशा सत्य था।

चूंकि चयनकर्ता कुछ और अनुकूलन का उपयोग कर सकते हैं, तो आप jQuery UI डेवलपर्स के लिए अगले आधिकारिक संस्करण में इसे शामिल करने के लिए एक सुविधा अनुरोध भी कर सकते हैं।

+0

जबकि मैं मानता हूं कि आपके पास पीसी और डिवाइस पर फ़ंक्शन है ctrl कुंजी, आपके पास स्पर्श डिवाइस का उपयोग करते समय वह फ़ंक्शन नहीं है - इसलिए यह एक बहुत अच्छा विचार है और यह एक डबल अप नहीं बल्कि एक अतिरिक्त या एक्सटेंशन है। – Jobst

0

आप प्राप्त करने के लिए आप क्या चाहते हैं कोड में दो सरल तत्वों इंजेक्षन करने के लिए है। जब भी आपको उलटा/टॉगल कार्यक्षमता की आवश्यकता होती है, तो यह सिर्फ मेटाकी बूलियन को बदल देता है।

options: { 
    appendTo: 'body', 
    autoRefresh: true, 
    distance: 0, 
    filter: '*', 
    tolerance: 'touch', 
    inverted: false /* <= FIRST*/ 
}, 

_mouseStart: function(event) { 
    var self = this; 

    this.opos = [event.pageX, event.pageY]; 

    if (this.options.disabled) 
     return; 

    var options = this.options; 

    if (options.inverted) /* <= SECOND*/ 
     event.metaKey = !event.metaKey; /* <= SECOND*/ 
संबंधित मुद्दे