[英]how to get html content of a div element using jquery
我有一个动态创建的html表,因此我需要将某些单元格值输入到我尝试过next()nextAll()cosesst()的jquery变量中,但对我没有任何帮助。
这是我用PHP创建的表
if ($result = $hongcon->query($query)) {
while ($row = $result->fetch_object()) {
echo "<tr>";
echo "<td><div style=\"padding-top: 10px;\"><a class=\"delete\" onclick=\"delete_product($row->id)\">Delete</a></div></td>";
echo "<td><div id=\"id\" style=\"padding: 10px; \">$row->id</div></td>";
echo "<td><div style=\"padding: 10px;\" class=\"edite\">$row->itemName</div></td>";
echo "<td><div id=\"iid\" style=\"padding: 10px;\">$row->iId</div></td>";
echo "<td><div id=\"pid\" style=\"padding: 10px;\">$row->pId</div></td>";
echo "<td><div id=\"image\" style=\"padding: 10px;\">$row->itemImage</div></td>";
echo "<td><div id=\"desc\" style=\"padding: 10px;\">$row->itemDescription</div></td>";
echo "<td><div id=\"pdfone\" style=\"padding: 10px;\">$row->pdfOne</div></td>";
echo "<td><div id=\"pdftwo\" style=\"padding: 10px;\">$row->pdfTwo</div></td>";
echo "<td><div id=\"pdfthree\" style=\"padding: 10px;\">$row->pdfThree</div></td>";
echo "</tr>";
};
我的头部有以下jquery函数。 此代码用于测试。 总是给我不确定的。
iid,pid,desc是我想要获取变量值的id。
$(document).ready(function() {
$("div.edite").on("dblclick", function() {
OriginalText = $(this).html();
$id = $(this).next("td div").find("#iid").html();
alert($id);
});
});
您的代码有一个严重错误:您为表中的每一行分配一个ID。 因此,您的ID并非唯一,但应该唯一。
因此,请尝试有所作为:使用CSS类而不是ID。 可能:
<table><!-- ... --> <tr>
<td class="mytable-td mytable-col-iid">...</td>
<td class="mytable-td mytable-col-pid">...</td>
<!-- ... -->
<tr></table>
该设计具有两个优点:
mytable-td
类中“隐藏”您的填充 $('mytable tr').get(rowIndex).find('.mytable-col-iid').html()
来通过jQuery获取值$('mytable tr').get(rowIndex).find('.mytable-col-iid').html()
你有这个:
$id = $(this).next("td div").find("#iid").html();
但这是行不通的,因为div.edite
没有下一个td
。 而且,您将无法在下一个td div
找到div#iid
,因为它已经是该div
。 最后,您应该避免在此代码中使用ID,因为最终将导致重复项无法使用。 将上面的行更改为此,它应该起作用:
$id = $(this).closest("TR").next("td div").html();
ID在整个文档中应该是唯一的。 我认为您应该对代码进行一些更改,以便为每个id添加后缀(pj为行号)。无论如何,您可以使用$(this).parent().parent().find("#iid").html();
代替这个
$id = $(this).next("td div").find("#iid").html();
这样使用
$id = $(this).parent().siblings().find("#iid").html();
您应该更改php代码,以生成具有唯一数字标识符的表行
<?php
if ($result = $hongcon->query($query)) {
while ($row = $result->fetch_object()) {
echo "<tr>";
echo "<td><div style=\"padding-top: 10px;\"><a class=\"delete\" onclick=\"delete_product($row->id)\">Delete</a></div></td>";
echo "<td><div id=\"id_$row->id\" style=\"padding: 10px; \">$row->id</div></td>";
echo "<td><div style=\"padding: 10px;\" class=\"edite\" editId=\"$row->id\">$row->itemName</div></td>";
echo "<td><div id=\"iid_$row->id\" style=\"padding: 10px;\">$row->iId</div></td>";
echo "<td><div id=\"pid_$row->id\" style=\"padding: 10px;\">$row->pId</div></td>";
echo "<td><div id=\"image_$row->id\" style=\"padding: 10px;\">$row->itemImage</div></td>";
echo "<td><div id=\"desc_$row->id\" style=\"padding: 10px;\">$row->itemDescription</div></td>";
echo "<td><div id=\"pdfone_$row->id\" style=\"padding: 10px;\">$row->pdfOne</div></td>";
echo "<td><div id=\"pdftwo_$row->id\" style=\"padding: 10px;\">$row->pdfTwo</div></td>";
echo "<td><div id=\"pdfthree_$row->id\" style=\"padding: 10px;\">$row->pdfThree</div></td>";
echo "</tr>";
};
?>
JQUERY:
$(document).ready(function() {
$("div.edite").on("dblclick",function() {
$iid = "iid_"+$(this).attr('editId');
OriginalText = $(this).html();
$id = $("#"+$iid).html();
alert($id);
});
});
使用此代替:
$id = $(this).parent("td div").find("#iid").html();
因为在当前代码中您具有:
$id = $(this).next("td div").find("#iid").html();
那是行不通的,因为div
旁边没有td
。 因此,您将无法在下一个td div
找到div#iid
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.