2010-01-14 58 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; 
     } 
    } 

});