我有一个带有添加/删除按钮的表,这些按钮添加和删除表中的行,按钮也添加了每个新行
这里有我的html
<table>
<tr>
<th>catalogue</th>
<th>date</th>
<th>add</th>
<th>remove</th>
</tr>
<- target row ->
<tr id="cat_row">
<td>something</td>
<td>something</td>
<td><input id="Add" type="button" value="Add" /></td>
<td><input id="Remove" type="button" value="Remove" /></td>
</tr>
</- target row ->
</table>
JavaScript:
$("#Add").click(function() {
$('#cat_row').after('<- target row with ->'); // this is only a notation to prevent repeatation
id++;
});
$("#Remove").click(function() {
$('#cat_'+id+'_row').remove();
id--;
});
请注意,每次添加新行后,id
也会更改,例如此处点击“添加”按钮 1次
<table>
<tr>
<th>catalogue</th>
<th>date</th>
<th>add</th>
<th>remove</th>
</tr>
<tr id="cat_row">
<td>something</td>
<td>something</td>
<td><input id="Add" type="button" value="Add" /></td>
<td><input id="Remove" type="button" value="Remove" /></td>
</tr>
<tr id="cat_1_row">
<td>something</td>
<td>something</td>
<td><input id="Add" type="button" value="Add" /></td>
<td><input id="Remove" type="button" value="Remove" /></td>
</tr>
</table>
现在新添加的按钮没有任何操作我必须始终点击原始按钮 - 添加/删除
在此之后我想要删除按钮删除 ONLY 单击它的行 例如,如果我单击第2行中的按钮,则第2行将被删除
的信息: 我使用带有python 2.7的web2py 2.2.1和最后一个版本的jQuery
答案 0 :(得分:3)
您不能拥有两个具有相同id
的按钮(您对“添加”和“删除”都使用重复项)。 id
values must be unique on the page
您可能会考虑使用类,并查看事件委派。例如,假设这是您页面上的 only 表(如果没有,只需使选择器更具体),如果您将按钮更改为“add-btn”和“remove-btn”类而不是id
值,那么您可以使用delegate
:
$("table").delegate(".add-btn", "click", function() {
// An add button was pressed, you can find out which
// row like this:
var row = $(this).closest('tr');
});
...同样适用于.remove-btn
按钮。
或者,有些人更喜欢使用on
(注意参数的顺序略有不同):
$("table").on("click", ".add-btn", function() {
// An add button was pressed, you can find out which
// row like this:
var row = $(this).closest('tr');
});
您使用的是目前风格问题。为了清楚起见,我更喜欢delegate
,但jQuery团队喜欢超负荷功能。到目前为止,他们还没有弃用delegate
,尽管他们称之为“取代”。
答案 1 :(得分:3)
我认为它会更好而不是:
$('#cat_'+id+_row').remove();
在onclick事件中执行此操作:
$(this).parent().parent().remove();