2010-01-14 62 views
0

我有这样的代码:jQuery的事件元素

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

我试图做一个表排序。但是,我不想排序第一个表格行和最后一个表格行。所以我想只是取消事件,如果它是第一行或最后一行。但是,当我提醒event.target时,它告诉我它是设置为可排序容器的元素。我怎样才能真正获得发送到事件的元素。还有谁知道如何取消该事件?它只是返回false或event.preventDefault()?

+0

您使用哪种插件进行排序? jQuery UI? – cletus 2010-01-14 00:26:47

回答

1

您可以使用回调的第二个参数访问小部件元素。

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

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

在回答您的评论:

你是说你想一些在列表中的元素的可拖动?

你应该这样偏好的选项

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

谢谢,完美的作品...你知道如何取消元素的事件吗?因为任何没有我不想移动的课程的事件。 – ngreenwood6 2010-01-14 00:34:35

0

让您的生活更轻松。使用页眉和页脚元素:

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

是的,他们应该按顺序出现(页脚在主体之前)。然后,您可以对身体进行排序,将页眉和页脚留在原位。这可能就足够了:

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

它会更容易使用该选项来选择排序项目。

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

上面说,“那种所有TR的除了第一个和最后一个”

在jQuery中,你可以通过返回false取消事件处理程序。

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

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

});