与使用 jquery 在此表中追加相反

The opposite of append in this table using jquery

提问人:SD1990 提问时间:8/19/2011 最后编辑:RSKSD1990 更新时间:8/19/2011 访问量:880

问:

我需要与这段代码相反:

if( $('#effort_<%= @project_task.id %>').length == 0 )
  $('#task_list').append('<tr><td><%= @project_task.project.project_number %> <%= @project_task.project.project_name %> - <%= @project_task.task_name %></td>' +
                         '<td><%= text_field :effort, :hours, :name => 'effort_' + @project_task.id.to_s, :id => 'effort_' + @project_task.id.to_s %></td>' +
                         '<td><%= link_to image_tag('icons/delete.png'), :method => :destroy, :remote => true %></td></tr>' );
  $('#effort_<%= @project_task.id.to_s %>').change( function() { submiteffort( this, <%= @project_task.id.to_s %>); } );

当用户单击“删除”按钮时,需要删除表的该行。 我知道您可以使用 .remove() 但我不确定如何使用它,因为我是 RoR 的新手。

jQuery Ruby-on-Rails Ruby 不显眼的 JavaScript

评论

1赞 Awea 8/19/2011
RoR 输出 html,因此您可以正常使用 jquery

答:

0赞 Henry 8/19/2011 #1

下面是一个基本示例,说明您想要如何执行。我希望你不介意,但我已经把它剥离到最基本的骨头,但它应该让你对从哪里开始有一个很好的了解。

JSFiddle:http://jsfiddle.net/saceh/1/

<button id="Add">Add Row</button>
<hr>
<table id="TaskList">
</table>

<script>
// RowId is not important, just used to show you that rows are dynamically added
var RowId = 0;

$("#Add").click(function (e) {
    $("#TaskList").append("<tr><td>" + RowId  + "</td><td><button id='Delete'>Delete</button></td></tr>");
    RowId++;
});

$("#Delete").click(function(e) {
   var Row = $(this).parents('tr');
   $(Row).remove(); 
});

单击“删除”时,它会找到父行并将其删除,而“添加”会执行类似于您当前正在执行的操作。

0赞 Bas Slagter 8/19/2011 #2

可以使用方法(添加一些标识符)指向要删除的行,然后使用 remove 方法实际删除它。

1赞 Baz1nga 8/19/2011 #3

假设你的删除在每行的 TR 中,你需要做这样的事情

如果 close buttton/image 有一个类 close,则像这样在其上绑定一个事件

$('close').live("click",function()
{
    $(this).parents("tr").remove();   //this here is referring to the button 
});
2赞 Behrang Saeedzadeh 8/19/2011 #4

你可以做这样的事情:

$("#task_list a").live("click", function(event) {
  $(event.target).closest("tr").remove();
});

确保使用最接近的。 将返回所有祖先,因此如果您有嵌套表,它可能会删除比需要更多的节点。 是最安全的选择。parentstrclosest