シフトを保持して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
@バーディール、それは最善の方法です。私がこのコードを書いていたとき、私は非常に具体的なことを念頭に置いていたので、自分の目的のために書き直すことが最善の方法です。 –