2009-09-03 4 views
2

Ich habe einen div verschachtelten divs enthält, etwa so:jquery Sortable/auswählbar: Filterung Kind steuert

<div id="tree" class="tree"> 
<div class="node"><div class="handle"></div>Node 1<div class="ignore"></div> 
<div class="node"><div class="handle"></div>Node 2<div class="ignore"></div> 
<div class="node"><div class="handle"></div>Node 3<div class="ignore"></div> 
</div> 

Dann sortierbar hinzufügen() und wählbar()

$('.tree').sortable({ 
    handle:'.handle' 
}); 

$('.tree').selectable(); 

Ich bin Verwenden des "sortierbaren" Verhaltens der jQuery UI, so dass der Benutzer die Liste neu anordnen kann. Das Problem ist, dass, wenn der Benutzer ein div mit der Klasse "Ignorieren" klickt, die "auswählbare" Hervorhebung sich zu diesem div bewegt. Ich möchte die auswählbaren und sortierbaren Verhaltensweisen so filtern, dass sie nur die .node-Sets abfangen, wobei der .ignore-Test ignoriert wird, da er eine Toolbox enthält, deren Steuerelemente keine Klicks mehr akzeptieren.

Vorschläge?

Antwort

5

Für sortierbar() können Sie die zu erfassenden Elemente angeben.

$('.tree').sortable({ 
    handle: '.handle', 
    items: 'div:not(.ignore)' 
}); 

Ich habe es nicht benutzt, aber es sieht aus wie selectable() eine Filteroption hat. Vielleicht versuchen Sie dies:

$('.tree').selectable({ 
    filter: 'div:not(.ignore)' 
});