2010-01-14 7 views
0

J'ai ce code:élément événement jquery

$(".testing").sortable({ 
     helper: fixHelper, 
     containment:$("testing").parent(), 
     start:function(){ 
      if($(event.target).hasClass("test")){ 
       alert("hello"); 
      } 
      if($(this).hasClass("test")){ 
       alert("hello"); 
      } 
     } 
}); 

Je suis en train de faire une table sortable. Cependant, la première rangée du tableau et la dernière rangée du tableau ne sont pas triables. Je pensais donc juste annuler l'événement si c'était la première rangée ou la dernière rangée. Cependant, quand j'alerte le event.target, il me dit que c'est l'élément qui est placé dans le conteneur triable. Comment puis-je obtenir l'élément qui a été envoyé à l'événement? Aussi quelqu'un sait-il comment annuler l'événement? est-ce juste de retourner false ou event.preventDefault()?

+0

Quels plugins utilisez-vous pour trier? interface utilisateur jQuery? – cletus

Répondre

1

Vous pouvez accéder à un élément de widgets avec le second argument du rappel.

start: function (event, ui){ 
    var helper=$(ui.helper); 
} 

http://jqueryui.com/demos/sortable/#overview

En réponse à votre commentaire:

Voulez-vous dire que vous voulez quelques-uns des éléments de la liste à pas être draggable?

Vous devriez cette préférence dans les options

$('someElement').sortable({ 
    items: '.test', 
    //other sortable options 
}); 
+0

merci qui fonctionne parfaitement ... savez-vous comment annuler un événement pour l'élément? parce que tout événement qui n'a pas la classe, je ne veux pas être en mesure de bouger. – ngreenwood6

0

Facilitez-vous la vie. Utiliser les éléments d'en-tête et de pied de page:

<table> 
<thead> 
    <tr>...</tr> 
</thead> 
<tfoot> 
    <tr>...</tr> 
</tfoot> 
<tbody> 
    <tr>...</tr> 
    <tr>...</tr> 
    <tr>...</tr> 
    ... 
</tbody> 
</table> 

Oui, ils doivent apparaître dans cet ordre (pied de page avant le corps). Et puis vous pouvez juste trier au corps en laissant l'en-tête et le pied de page en place. Cela sera probablement suffisant:

$(".testing > tbody").sortable({...}); 
0

Il serait plus facile d'utiliser l'option pour sélectionner les éléments triables.

$('.testing').sortable({ 
    items: 'tr:not(:last, :first)' 
}); 

Le dit ci-dessus, « trier tous les tr de l'exception de la première et la dernière »

En jQuery, vous pouvez annuler un gestionnaire d'événements en retournant faux.

$(".testing").sortable({ 
    helper: fixHelper, 
    containment:$("testing").parent(), 
    start:function(){ 

     if($(event.target).hasClass("test") || $(this).hasClass('test')){ 
      alert("hello"); 
      return false; 
     } 
    } 

});