Tôi muốn bật các khả năng đa lựa chọn trong bảng Giao diện người dùng jQuery Có thể chọn bằng cách giữ shift.Bật Shift-Multiselect trong giao diện người dùng jQuery Có thể chọn
tôi có lẽ nên làm một cái gì đó như thế này nếu thay đổi được tổ chức xuống trên mouseclick
- Nhận topmost chọn yếu tố
- Hãy nhấp yếu tố
- Chọn tất cả các yếu tố trong giữa
nhưng tôi không thể tìm thấy cách để làm điều này một cách sạch sẽ ...
Tại thời điểm này tôi đã nhận bên trong cấu hình lựa chọn:
start: function(e)
{
var oTarget = jQuery(e.target);
if(!oTarget.is('tr')) oTarget = oTarget.parents('tr');
}
Vì vậy oTarget
là yếu tố nhấp (và e.currentTarget
là toàn bộ bảng) nhưng bây giờ những gì? Làm thế nào tôi có thể tìm thấy yếu tố nào đã được chọn theo cách có thể cho tôi biết liệu phần tử được nhấp có vượt quá hoặc thấp hơn các phần tử đã chọn và chọn mọi thứ ở giữa không?
Tôi đã giải quyết nó bây giờ như thế này, thêm vào các yếu tố có thể lựa chọn:
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(...)
Cảm ơn, tôi đã không sử dụng này trực tiếp nhưng tôi có thể nhận được những ý tưởng cần thiết để làm việc nó ra từ nguồn. :) – bardiir
@bardiir, đó là cách tốt nhất. Khi tôi viết mã này, tôi đã có một điều rất cụ thể trong tâm trí, do đó, viết lại nó cho mục đích của riêng bạn là cách tốt nhất để đi. –