2010-05-27 4 views
3

J'ai des éléments de liste dans une liste non ordonnée qui, lorsqu'on double-clique, peut être édité en place via un éditeur wysiwyg.Sortable gérer les sélecteurs complexes de l'interface utilisateur de jQuery pour l'option des éléments?

$('ul.mtm_section').sortable({ 
    disabled: true, 
    distance: 10, 
    items: '> li:not(:has(form))' 
}); 

Mon but est d'empêcher l'élément de la liste d'être triés pendant qu'il est en cours d'édition - alias une fois un élément de forme a été échangé en place du contenu.

Malheureusement, mon sélecteur d'éléments ne fonctionne pas. Est triable capable de gérer des sélecteurs complexes comme ceux-ci? Si non, existe-t-il d'autres moyens intelligents pour désactiver certains éléments d'être triable, peut-être une fonction de rappel?

Je préférerais m'appuyer sur cette option triable, car le plugin wysiwyg est profondément imbriqué avec jEditable et, autant que je sache, n'ouvre aucun événement pour que je puisse y accéder.

En utilisant jQuery et jQuery UI 1.4.2 1.8.1

Répondre

3

jQuery UI Sortable accepte tout sélecteur, mais le sélecteur permet de choisir quels éléments sont triables lorsque le triables est créé-pas quand un frein commence. Si vous modifiez le DOM, il se souviendra toujours des éléments qui étaient triables lorsque le tri a été créé.

Vous devriez pouvoir return false de sortstart si ui.item contient une <form>, mais cela semble ne pas fonctionner en ce moment; à la place, vous pouvez l'utiliser, ce qui:

$('ul').sortable({ 
    items: '> li', 
    cancel: 'li:has(form)' 
}); 
+0

Merci! Je connaissais annuler, mais j'ai dû avoir un bug dans mon code quand je l'ai essayé. Cela fonctionne pour moi. En note, je me demande s'il y a d'autres cas où sortable bénéficierait d'une option qui a forcé le sortable à utiliser des hooks d'événement jquery "live", avec une option telle que liveItemsSelector: true – jverdi

Questions connexes