Oto prosty przykład stosując moją odpowiedź do poprzedniego pytania: http://www.jsfiddle.net/yijiang/83W7X/2/embedded/result
var selected = [];
function drawSelection(){
if(selected.length){
selected.sort(function(a, b){
if(a.sourceIndex){
return a.sourceIndex - b.sourceIndex;
} else if(a.compareDocumentPosition){
if(a.compareDocumentPosition(b) == Node.DOCUMENT_POSITION_PRECEDING){
return 1;
} else {
return -1;
}
}
});
var range = rangy.createRange(),
sel = rangy.getSelection();
range.setStart(selected[0].children[0], 0);
range.setEnd(selected[selected.length - 1].children[0], 1);
sel.setSingleRange(range);
}
}
$('ul').selectable({
delay: 100,
selecting: function(event, ui) {
if(ui.selecting.getAttribute('class').indexOf('wrapper') !== -1 && $.inArray(ui.selecting, selected) === -1) {
selected.push(ui.selecting);
drawSelection();
}
},
unselecting: function(event, ui){
if(ui.unselecting.getAttribute('class').indexOf('wrapper') !== -1 && $.inArray(ui.unselecting, selected) > -1){
selected.splice($.inArray(ui.unselecting, selected), 1);
drawSelection();
}
}
});
Łączy on w jQuery UI jest do wyboru z doskonałej biblioteki smukły Tim Downa, aby stworzyć coś podobnego do tego, co prosiliśmy. Myślę. To, o co prosiłeś, nie było całkiem jasne.
Kod zachowuje tablicę aktualnie wybranych elementów li
. Druga część kodu dodaje odpowiednie procedury obsługi zdarzeń i opcje.Funkcja drawSelection
jest wywoływana za każdym razem, gdy element jest zaznaczony lub odznaczony. Funkcja najpierw sortuje wszystkie elementy według ich pozycji w DOM, a następnie kontynuuje rysowanie zaznaczenia od pierwszego wybranego li
do ostatniego.
Kod, podobnie jak theazureshadow's, jest tylko dowodem koncepcji, ponieważ wyodrębniam to, co naprawdę powinno być prostym zadaniem polegającym na wybraniu li
s do dość ciężkiej biblioteki Rangy. Nie działa też zbyt dobrze i może zrobić z pewnym refaktoryzacją.
"Niewidzialny", co oznacza? czy wyświetla się none, forecolor = backcolor, visible false? Istnieje wtyczka do przycinania obrazu jquery, która pozwala ci wybrać obszar na obrazie, ale część tekstową musisz trochę zakodować. –