我想在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 2012-02-21 11:13:49
@bardiir,這是最好的方法。當我寫這段代碼的時候,我有很特別的想法,所以爲了你自己的目的而重寫它是最好的方法。 – 2012-02-21 11:47:32