5

我是jquery/rails的新手,我在使用.sortable()时遇到了问题。我有可扩展的行,我似乎无法得到正确的代码隐藏的行,即子行,坚持与可见,即父行。相关的JS代码:Sortable table with expandable Row

(function($){ 
    $.fn.jSortable = function(){ 


    var element = this; 

    var fixHelper = function(e, ui) { 
     ui.children().each(function(){ 
      $(this).width($(this).width()); 
     }); 
     return ui; 
    }; 

    $(element).sortable({ 
     helper: fixHelper, 
     axis: "y", 
     cursor: "move", 
     items: "tr.odd2", 
     distance: "30" 

    }); 
    $(element).disableSelection(); 
}; 

})(jQuery); 

父行具有类odd2,子行具有类子级。

当应用.sortable()时,将两行锁定在一起的正确方法是什么?

我目前使用jQuery的护栏护栏3.1.1 1.0.19

编辑:

下面是相关的HTML

<table id="sortableTable"> 
    <tr class= 'headings'> 
     <th><%= sortable "number" %></th> 
     <th><%= sortable "customer_id" %></th> 
     <th><%= sortable "priority" %></th> 
     <th><%= sortable "quantity" %></th> 
     <th><%= sortable "due_date" %></th> 
     <th></th> 
    </tr> 

<% @jobs.each do |job| %> 
    <tr class= "odd2"> 
    <td><%= job.number %></td> 
    <td><%= job.customer %></td> 
    <td><%= job.priority %></td> 
    <td><%= job.quantity %></td> 
    <td><%= job.due_date %></td> 
    <td><%= button 'Edit', edit_job_path(job) %></td> 
    </tr> 

    <tr class= "child"> 
    <td><%= job.job_items %></td> 
    </tr> 
<% end %> 
</table> 

<%= javascript_tag do %> 
$(document).ready(function(){ 
    $('#sortableTable tbody').jSortable(); 
}); 

<% end %> 

编辑2:我有我的应用程序更新, Rails的3.2.1与jQuery的铁轨2.0.0

编辑3:由于没有人提供了解决方案的表标签,而不是一个div,我还没有找到任何适用于表,我是被迫改变为divs。

回答

1

看来,这是你想要什么:http://jqueryui.com/demos/sortable/#portlets

如果没有,请把你的HTML,使其更容易看到你正在尝试做的。

具体来说,请注意可排序项目是如何分区和具有儿童的div。

<div class="portlet"> 
    <div class="portlet-header">Feeds</div> 
    <div class="portlet-content">Lorem ipsum dolor sit amet, consectetuer adipiscing elit</div> 
</div> 
+0

对于我对jquery的知识缺乏感到抱歉,但该portlet是否需要在div上执行?从你的例子,我可以切换到表,父行,隐藏行吗? – 2012-02-17 21:01:58

+0

由于没有人知道如何将其应用于表格,因此我必须更改为div以便我可以使用它。谢谢你的回答。 – 2012-02-22 21:04:41