2010-10-15 12 views

Odpowiedz

35

Spóźniłem się bardzo, aby odpowiedzieć na twoje pytanie, ale pozwól mi odpowiedzieć tak czy inaczej, aby zachować go jako punkt odniesienia dla innych.

$(".selector").bind("mousedown", function (e) { 
    e.metaKey = true; 
}).selectable(); 

pozwoli to przełączyć zachowanie, którego szukasz.

+0

Dzięki za udostępnienie. To działa dobrze. – fehays

+2

Widzę, że działa zgodnie z oczekiwaniami, ale szczerze mówiąc, nie rozumiem, jak! czy możesz wyjaśnić, dlaczego ten kod działa (mam na myśli to, jak to się odznacza na drugim kliknięciu?) – HungryCoder

+3

To tylko dodaje metaKey (Ctrl) do zdarzenia "mousedown", które wymusza takie samo zachowanie, jakbyś nacisnął klawisz Ctrl . – Novalis

0

Czy to masz na myśli?

To zdarzenie jest wywoływane na końcu operacji wyboru, na każdym elemencie usuniętym z zaznaczenia.

przykłady Kod

dostarczyć funkcja zwrotna obsłużyć niezaznaczoną wydarzenie jako opcji startowej.

$(".selector").selectable({ 
    unselected: function(event, ui) { ... } 
}); 
Bind to the unselected event by type: selectableunselected. 
$(".selector").bind("selectableunselected", function(event, ui) { 
    ... 
}); 

Źródło:

http://jqueryui.com/demos/selectable/#event-unselected

+0

Cóż, potrzebuję wyzwolić to niezaznaczone zdarzenie po kliknięciu wybranego elementu. Obecnie zdarzenie to jest uruchamiane tylko po kliknięciu innego elementu, który można wybrać. – fehays

11

Więc tutaj jest to, co po prostu skończyło się robi. Użyłem nazwy klasy, aby przełączyć zaznaczanie i odznaczanie. Chciałbym usłyszeć, jeśli nie ma innej opcji:

$("#selectable").selectable({ 
    selected: function (event, ui) { 
     if ($(ui.selected).hasClass('selectedfilter')) { 
      $(ui.selected).removeClass('selectedfilter'); 
      // do unselected stuff 
     } else {    
      $(ui.selected).addClass('selectedfilter'); 
      // do selected stuff 
     } 
    }, 
    unselected: function (event, ui) { 
     $(ui.unselected).removeClass('selectedfilter'); 
    } 
}); 
+0

Ahh ok teraz dostaję co ty! Przepraszam! – Trufa

+0

Bez problemu @Trufa. Jestem pewien, że nie wyjaśniłem tego bardzo dobrze. Dzięki za próbę pomocy. – fehays

+1

Pamiętaj, że aby zmienić nazwę klasy, możesz po prostu użyć "toggleClass (" selectedFilter ")". Nie trzeba sprawdzać, czy element ma klasę. ToggleClass robi to za Ciebie. – Kriem

2

Jeśli chcesz, aby istniejące pozycje zostać zachowane i jeszcze mieć operację przełączania, wystarczy ignorować niezaznaczoną wydarzenie dla danego rozwiązania. Musisz również usunąć wybraną przez ui klasę.

Powiązane problemy