2010-10-15 15 views
11

पर चयनित आइटम का चयन रद्द करें क्या किसी को पता है कि जब आप इसे क्लिक करते हैं तो चयनित तत्व को अचयनित करने के लिए jquery ui चयन करने योग्य तत्व को कॉन्फ़िगर करने का कोई तरीका है? टॉगल की तरह सॉर्ट करें। यदि यह पहले से ही चुना गया है, तो इसे अचयनित करें, अन्यथा डिफ़ॉल्ट व्यवहार करें।jQuery यूआई चयन योग्य -

धन्यवाद।

उत्तर

35

मुझे आपके प्रश्न का जवाब देने में बहुत देर हो चुकी है, लेकिन मुझे इसे अभी भी जवाब दें ताकि इसे दूसरों के संदर्भ में रखा जा सके।

$(".selector").bind("mousedown", function (e) { 
    e.metaKey = true; 
}).selectable(); 

इससे टॉगल व्यवहार की अनुमति मिल जाएगी जो आप खोज रहे हैं।

+0

साझा करने के लिए धन्यवाद। यह अच्छी तरह से काम करता है। – fehays

+2

मुझे लगता है कि यह उम्मीद के रूप में काम कर रहा है लेकिन ईमानदारी से, मैं समझ नहीं आता कि कैसे! क्या आप कृपया यह बता सकते हैं कि यह कोड क्यों काम कर रहा है (मेरा मतलब है कि यह दूसरे क्लिक पर अचयनित क्यों हो रहा है?) – HungryCoder

+3

यह सिर्फ "mousedown" ईवेंट में मेटाकी (Ctrl) जोड़ता है, जो उसी व्यवहार को मजबूर करता है जैसे कि आप स्वयं को Ctrl दबाते । – Novalis

0

क्या इसका मतलब है?

यह घटना चयन से हटाए गए प्रत्येक तत्व पर, चयनित ऑपरेशन के अंत में ट्रिगर की गई है।

कोड उदाहरण

आपूर्ति एक कॉलबैक फ़ंक्शन एक init विकल्प के रूप में नहीं चुना जाता घटना को संभालने के लिए।

$(".selector").selectable({ 
    unselected: function(event, ui) { ... } 
}); 
Bind to the unselected event by type: selectableunselected. 
$(".selector").bind("selectableunselected", function(event, ui) { 
    ... 
}); 

स्रोत:

http://jqueryui.com/demos/selectable/#event-unselected

+0

वैसे जो मुझे चाहिए वह एक चयनित तत्व क्लिक होने पर इस अचयनित घटना को ट्रिगर करने के लिए है। अभी, यह घटना केवल तभी आग लगती है जब मैं किसी अन्य चयन योग्य तत्व पर क्लिक करता हूं। – fehays

11

खैर यहाँ क्या मैं सिर्फ कर समाप्त हो गया है। मैंने चयन करने और अचयनित करने के लिए कक्षा का नाम उपयोग किया। मैं अगर वहाँ एक और विकल्प है जानकर अच्छा लगेगा:

$("#selectable").selectable({ 
    selected: function (event, ui) { 
     if ($(ui.selected).hasClass('selectedfilter')) { 
      $(ui.selected).removeClass('selectedfilter'); 
      // do unselected stuff 
     } else {    
      $(ui.selected).addClass('selectedfilter'); 
      // do selected stuff 
     } 
    }, 
    unselected: function (event, ui) { 
     $(ui.unselected).removeClass('selectedfilter'); 
    } 
}); 
+0

आह ठीक है अब मैं आपको बताता हूं! माफ़ कीजिये! – Trufa

+0

कोई समस्या नहीं @Trufa। मुझे यकीन है कि मैंने इसे बहुत अच्छी तरह से समझाया नहीं है। सहायता का प्रयास करने के लिए धन्यवाद। – fehays

+1

ध्यान दें कि कक्षा का नाम स्विच करने के लिए, आप बस 'toggleClass ("चयनित फ़िल्टर") का उपयोग कर सकते हैं। यह जांचने की कोई आवश्यकता नहीं है कि किसी तत्व के पास कक्षा है या नहीं। ToggleClass यह आपके लिए करता है। – Kriem

2

आप चाहते हैं कि मौजूदा चयन संरक्षित किया और अभी तक टॉगल आपरेशन है, तो आप बस समाधान दिया के लिए नहीं चुना जाता घटना की अनदेखी करने की जरूरत है। इसके अलावा आपको यूई-चयनित कक्षा को हटाने की जरूरत है।

$("#selectable").selectable({ 
selected: function (event, ui) { 
    if ($(ui.selected).hasClass('selectedfilter')) { 
     $(ui.selected).removeClass('selectedfilter').removeClass('ui-selected'); 
     // do unselected stuff 
    } else {    
     $(ui.selected).addClass('selectedfilter').addClass('ui-selected'); 
     // do selected stuff 
    } 
} 
});