Я хочу включить функции множественного выбора в таблице выбора jQuery UI, удерживая shift .
Я, вероятно, должен сделать что-то подобное, если shift удерживается нажатой мышью
- Получить самый верхний выбранный элемент
- Получить нажатый элемент
- Выбрать все элементы между
но я не могу найти, как это сделать чистым способом ...
На данный момент я получил это в выбранной конфигурации:
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(...)