我有一个在.click()中运行的代码,但这只适用于第一行。 我需要使用相同的ID,因为数据是动态生成的 代码完美适用于第一行..并获取TR ID但不适用于第二行左右。
<tr id="25">
<td>25</td>
<td>asd</td>
<td>gjkhgkj</td>
<td></td>
<!-- more td's -->
<td id="edit" name="25">Edit</td>
<td id="delete" name="25">Delete</td>
</tr>
<tr id="24">
<td>24</td>
<td>hhh</td>
<td></td>
<!-- more td's -->
<td id="edit" name="24">Edit</td>
<td id="delete" name="24">Delete</td>
</tr>
删除客户数据的功能:
$('#delete').click(function(e) {
var bid = this.id; // button ID
var customerid = $(this).closest('tr').attr('id'); // table row ID
$.ajax({
type: "POST",
url: "delete.php",
data: "id="+customerid+"",
success: function(msg){
// $('#'+customerid).css({backgroundColor: 'red'});
$('#'+customerid).remove();
alert("Sucessfully Deleted.")
// $('#tabledata').load('load.php');
}
});//end of $ajax
答案 0 :(得分:1)
我需要使用相同的ID,因为数据是动态生成的。
您不能在单个页面上为多个元素使用相同的ID。如果需要动态生成元素,请改用类。
<td class="delete" name="24">Delete</td>
$('.delete').click(function(e) {
答案 1 :(得分:0)
由于ID必须是唯一的,因此事件仅绑定到ID为“delete”的第一个元素。你想要的是关于那个元素的一个类,而不是再试一次。另一件事,也许父母('tr')比最接近()更有意义。
如果你不能添加一个类而不是一个id(首先有点奇怪),你也可以使用'contains'选择器来查找字符串'delete'。像这样:
$("td:contains('delete')")
答案 2 :(得分:0)
这是因为您使用的是id选择器,它只返回一个元素而不是类选择器。你应该改变你的html并使用类
答案 3 :(得分:0)
您不能使用相同的ID!
ID必须是唯一的。
你不能把它变成一个班级。
或者如果您需要该号码,请将其设为数据属性。
答案 4 :(得分:0)
如果您的ID是数据库ID,必须将其作为AJAX流中的操作,请尝试以下操作:
$('#delete, #edit').click(function(e) {
var myID = $(this).attr('name');
var myAction = $(this).html();
var myRow = $(this).parent('tr');
alert('You have choosen to ' + myAction + ' the row (' + myID + ').');
});
当然,在那之后,你可以随心所欲地做任何事情;)