2010-10-15 10 views

Antwort

35

Ich bin sehr spät auf Ihre Frage zu antworten, aber lassen Sie mich nur darauf antworten, so dass es als Referenz für andere zu halten.

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

Dies ermöglicht das Toggle-Verhalten, das Sie suchen.

+0

Danke für das Teilen. Das funktioniert gut. – fehays

+2

ich sehe es funktioniert wie erwartet, aber ehrlich gesagt, ich verstehe nicht wie! Kannst du bitte erklären, warum dieser Code funktioniert (ich meine, wie es auf einem zweiten Klick deaktiviert?) – HungryCoder

+3

Dies fügt nur den MetaKey (Ctrl) zu dem "mousedown" -Ereignis, das das gleiche Verhalten erzwingt, als wenn Sie selbst Ctrl gedrückt hätten . – Novalis

0

Ist das was du meinst?

Dieses Ereignis wird am Ende der Auswahloperation für jedes Element ausgelöst, das aus der Auswahl entfernt wurde.

Codebeispiele

Versorgung einer Callback-Funktion, die nicht ausgewählte Ereignis als Option init zu handhaben.

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

Quelle:

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

+0

Nun, was ich brauche, ist dieses nicht ausgewählte Ereignis auszulösen, wenn ein ausgewähltes Element angeklickt wird. Momentan wird dieses Ereignis nur ausgelöst, wenn ich auf ein anderes auswählbares Element klicke. – fehays

11

Nun, hier ist, was ich gerade tun endete. Ich habe einen Klassennamen verwendet, um das Auswählen und Entfernen der Auswahl zu aktivieren. Ich würde gerne hören, wenn es eine andere Option ist:

$("#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 jetzt bekomme ich was du meinst! Es tut uns leid! – Trufa

+0

Kein Problem @Trufa. Ich bin mir sicher, dass ich es nicht gut erklärt habe. Danke, dass du versucht hast zu helfen. – fehays

+1

Beachten Sie, dass Sie zum Umschalten eines Klassennamens einfach 'toggleClass ("selectedFilter")' verwenden können. Es muss nicht überprüft werden, ob ein Element eine Klasse besitzt. ToggleClass macht das für Sie. – Kriem

2

Wenn Sie möchten, dass bestehende Auswahl beibehalten werden und dennoch die Toggelbetrieb haben, müssen Sie einfach angesichts der nicht ausgewählten Ereignis für die Lösung ignorieren. Außerdem müssen Sie die Klasse ui-selected entfernen.

Verwandte Themen