繁体   English   中英

如何使用jQuery获取div元素的html内容

[英]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>

该设计具有两个优点:

  1. 您可以在mytable-td类中“隐藏”您的填充
  2. 您可以通过调用$('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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM