2012-11-19 63 views
4

我有一些類似於下面的標記,我試圖隱藏「some_row」TR的。隱藏部分的div jquery可排序的部件

<div id="sortable"> 
<table> 
    <tr><td>Some Title 1</td></tr> 
    <tr class="some_row"><td><textarea ...></td><tr> 
</table>  
<table> 
    <tr><td>Some Title 2</td></tr> 
    <tr class="some_row"><td><textarea ...></td><tr> 
</table> 
</div> 

這是我曾嘗試:

$(function() { 
    $("#sortable") 
    .sortable({ 
     helper: function (e, o) { 
      o.find("#some_row").hide(); 
      return o; 
     }, 
     start: function() { 
      $(".some_row").hide(); 
     }, 
     stop: function() { 
      $(".some_row").show(); 
     } 
    }) 
    .disableSelection(); 
}); 

最初我開始只是startstop事件,然後我說helper因爲,我猜是克隆的選定行,有一個隱藏some_row div但高度相同。

無論如何,上述作品儘可能的風格完美,但它看起來小部件仍然考慮到周圍的div的原始高度。

有什麼我可以做的,以打撈這個想法?

回答

1

您需要在助手返回之前致電.somerow

該助手是原始div的克隆以及您看到的被拖動的內容。所以當你隱藏行時,克隆已經被創建。

啓動後運行的刷新完成重新加載可排序對象以調整新高度。

Fiddle Example

$(function() { 
$("#sortable") 
.sortable({ 
    cursor: 'move', 
    cursorAt: { left: 0, top: 10 }, 
    helper: function (e, o) { 
     $(".some_row").hide(); 
     o.find("#some_row").hide(); 
     return o; 
    }, 
    start: function() { 
     $("#sortable").sortable("refresh"); 
    }, 
    stop: function() { 
     $(".some_row").show(); 
    } 
}) 
.disableSelection(); 
}); 

您也可以拖動時(相對於輔助),並使用jqueryui sortable api

+0

麥克的cursorcursorAt選項懸停時顯示光標類型限定光標位置,這很棒,它幾乎在那裏。但是,如果你在選擇一行時注意到小提琴摺疊,但光標仍然低於div,就像它認爲它比它更大。 –

+0

@TomFobear我爲你更新了小提琴並將選項添加到了我的代碼中。您可以使用cursorAt指定與助手相關的遊標,並用光標定義封面遊標。 – Malkus

+1

實際上,我發現這仍然不能解決高度問題。當切換行的高度增加時,它變得明顯:http://jsfiddle.net/6naRs/6/ –