मैं शिफ्ट धारण करके एक jQuery UI चयन योग्य तालिका में बहुउद्देश्यीय क्षमताओं को सक्षम करना चाहता हूं।jQuery UI में Shift-Multiselect सक्षम करें
मैं शायद कुछ इस तरह करना चाहिए अगर पारी माउस क्लिक
- हो जाओ सर्वोच्च चयनित तत्व
- पर नीचे आयोजित किया जाता है पर क्लिक किया हो जाओ तत्व
- के सभी तत्वों का चयन करें
के बीच
पल मैं चयन विन्यास के अंदर यह मिल गया पर:
start: function(e)
{
var oTarget = jQuery(e.target);
if(!oTarget.is('tr')) oTarget = oTarget.parents('tr');
}
तो oTarget
क्लिक किए गए तत्व है (और e.currentTarget
पूरे मेज है), लेकिन अब क्या? मैं कैसे पा सकता हूं कि कौन से तत्व पहले से ही इस तरह से चुने गए हैं जो मुझे बता सकता है कि क्लिक किए गए तत्व चयनित लोगों के ऊपर या नीचे हैं और बीच में सबकुछ चुनें?
मैं अब इसका समाधान कर लिया इस तरह, चयन तत्व को जोड़ा गया:
jQuery(table).mousedown(function(e)
{
//Enable multiselect with shift key
if(e.shiftKey)
{
var oTarget = jQuery(e.target);
if(!oTarget.is('.ui-selectee')) oTarget = oTarget.parents('.ui-selectee');
var iNew = jQuery(e.currentTarget).find('.ui-selectee').index(oTarget);
var iCurrent = jQuery(e.currentTarget).find('.ui-selectee').index(jQuery(e.currentTarget).find('.ui-selected'));
if (iCurrent < iNew) {
iHold = iNew;
iNew = iCurrent;
iCurrent = iHold;
}
if(iNew != '-1')
{
jQuery(e.currentTarget).find('.ui-selected').removeClass('ui-selected');
for (i=iNew;i<=iCurrent;i++) {
jQuery(e.currentTarget).find('.ui-selectee').eq(i).addClass('ui-selected');
}
e.stopImmediatePropagation();
e.stopPropagation();
e.preventDefault();
return false;
}
}
}).selectable(...)
धन्यवाद, मैं इस सीधे का उपयोग नहीं किया, लेकिन मैं से इसे बाहर काम करने के लिए की जरूरत विचारों मिल सकता है स्रोत। :) – bardiir
@ बर्डिरीर, यह सबसे अच्छा तरीका है। जब मैं इस कोड को लिख रहा था तो मेरे मन में बहुत विशिष्ट बात थी, इसलिए इसे अपने उद्देश्य के लिए पुनः लिखना सबसे अच्छा तरीका है। –