2013-03-12 4 views
24

Es ist möglich, jquery ui nur für ein Listenelement sortierbar zu deaktivieren? Hier ist das Codebeispiel:jquery ui sortierbar disable für einen li item

<ul class="sortable"> 
    <li>Item 1</li> 
    <li>Item 2</li> 
    <li>Item 3</li> 
    <li>Item 4</li> 
    <li>Item 5</li> 
</ul> 

Zum Beispiel werde ich sortierbar deaktivieren, wenn ich Artikel klicken. Bitte Hilfe. Hier

ist die Javascript-Code:

$(document).ready(function(){ 
    $('.sortable li').click(function(){ 
     // Disable sortable for this item............. 
    }); 
}); 
+1

[Was haben Sie versucht?] (Http://whathaveyoutried.com) Können Sie Ihr Javascript einbeziehen? –

+2

http://api.jqueryui.com/sortable/#option-cancel <- brauchte 5 Sekunden um zu finden. – Mahn

+0

mögliches Duplikat von [jquery-ui sortierbar, verhindert, dass Artikel verschoben wird] (http://stackoverflow.com/questions/2006401/jquery-ui-sortable-prevent-item-from-being-moved) – Tibo

Antwort

41

Sicher, versuchen, etwas wie folgt aus:

$(".sortable").sortable({ 
     items: "li:not(.unsortable)" 
    }); 
$(".sortable").disableSelection(); 

Durch die Verwendung der items option Sie die Elemente angeben, die können und nicht sortiert werden können.

jsFiddle example

+0

Es ist möglich zu deaktivieren, wenn ich auf das Listenelement –

+0

Ich verstehe nicht, was Sie meinen. – j08691

+0

zum Beispiel $ ('. Sortable li').click (function() {/ * disable this item * /}); –

20

können Sie explizit Elemente ausschließen (beiseite, indem sie nicht):

$(".sortable").sortable({ 
    cancel: ".disable-sort-item" 
}); 
+2

am einfachsten zu implementieren. –

+0

Dies ist einfach, aber das deaktivierte Element konnte in der Listengruppe nach oben oder unten verschoben werden. Die Antwort von j08691 funktioniert in allen Szenarien. –

4

Ich weiß, diese Frage ist alt. aber ich lasse dich wissen, richtige Antwort. Wie man Artikel dynamisch deaktiviert und durch Klicken aktiviert. Weil ich das gleiche Problem bei 2016 habe: D

vor allem. Alles, was Sie tun müssen, ist, Elemente auf die sortierbare festzulegen, was beim Start deaktiviert wird. Parameter hinzufügen, was deaktivierte Elemente aus der Liste zu entfernen (es benötigt beim ersten init):

var sortable = $("#sortable-sections"); 
sortable.sortable({ 
    items: 'li:not(.ui-state-disabled)', 
    helper: 'clone', 
}); 
sortable.disableSelection(); 

(Bootstrap in Beispiel verwendet)

Dann einfach Ereignis-Listener hinzufügen, habe ich onClick, so zB hier:

Sortable-Element wird nur sortierbar sein, wenn er Daten hat, was sortierbarItem genannt wird, so dass es dynamisch deaktiviert wird, hoffe, es hilft jemandem.

Prost!

Verwandte Themen