[英]Getting contents by jQuery closest
我在使用jQuery的closest()
。 当我想打印一个示例(如d
变量)时,出现未定义的错误。
$(".eb").click(function() { var d = $(this).closest(".contact-info"); var t = $(this).closest(".contact-tell"); var n = $(this).closest(".contact-name"); var i = $(this).closest(".contact-id"); console.log(d.html()); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <table> <tr> <td class="contact-id"> <?php echo $value[0]; ?> </td> <td class="contact-name"> <?php echo $value[1]; ?> </td> <td class="contact-tell"> <?php echo $value[2]; ?> </td> <td class="contact-info"> <?php echo $value[3]; ?> </td> <td class="td-actions"> <a href="?IDD=<?php echo $value[0]." &owner=".$_SESSION['username'];?>"> <i class="glyphicon glyphicon-trash"></i> </a> <a href="#" class="eb" data-uid="<?php echo $value[0]; ?>" data-toggle="modal" data-target=".bs-example-modal-lg"> <i class="glyphicon glyphicon-edit"></i> </a> </td> </tr> </table>
closest()
只看祖先。 .contact-info
不是.eb
的祖先。
寻找最接近的tr
(最接近的共同祖先),然后在以下位置搜索:
var d=$(this).closest("tr").find(".contact-info")
一种更有效的方法...
$(".eb").click(function() { var $ancestor = $(this).closest("tr"); // Cache 'tr' so we don't have to look it up every time var d = $ancestor.find(".contact-info"); var t = $ancestor.find(".contact-tell"); var n = $ancestor.find(".contact-name"); var i = $ancestor.find(".contact-id"); console.log(d.html()); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <table> <tr> <td class="contact-id"> echo $value[0]; </td> <td class="contact-name"> echo $value[1]; </td> <td class="contact-tell"> echo $value[2]; </td> <td class="contact-info"> echo $value[3]; </td> <td class="td-actions"> <a href="#"> <i class="glyphicon glyphicon-trash"></i> </a> <a href="#" class="eb" data-uid="#" data-toggle="modal" data-target=".bs-example-modal-lg"> BUTTON <i class="glyphicon glyphicon-edit"></i> </a> </td> </tr> </table>
一种稍微不同的方法可以遍历到parent
并选择siblings
:
$(".eb").click(function() { var $parent = $(this).parent(); var d = $parent.siblings(".contact-info"); var t = $parent.siblings(".contact-tell"); var n = $parent.siblings(".contact-name"); var i = $parent.siblings(".contact-id"); console.log(d.html()); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <table> <tr> <td class="contact-id"> Id </td> <td class="contact-name"> Name </td> <td class="contact-tell"> Tell </td> <td class="contact-info"> Info </td> <td class="td-actions"> <a href="?IDD=<?php echo $value[0]." &owner=".$_SESSION['username'];?>"> <i class="glyphicon glyphicon-trash"></i> </a> <a href="#" class="eb" data-uid="<?php echo $value[0]; ?>" data-toggle="modal" data-target=".bs-example-modal-lg"> Click me! </a> </td> </tr> </table>
问题是因为closest()
直接在DOM树上查找,并且您要搜索的元素不是.eb
元素的.eb
元素; 他们是祖父母的兄弟姐妹。 要解决此问题,请使用closest()
以获得共同的祖先,然后使用find()
。 尝试这个:
$(".eb").click(function() { var $row = $(this).closest('tr'); var d = $row.find(".contact-info"); var t = $row.find(".contact-tell"); var n = $row.find(".contact-name"); var i = $row.find(".contact-id"); console.log(d.html()); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <table> <tr> <td class="contact-id"> contact-id </td> <td class="contact-name"> contact-name </td> <td class="contact-tell"> contact-tell </td> <td class="contact-info"> contact-info </td> <td class="td-actions"> <a href="?IDD=<?php echo $value[0]." &owner=".$_SESSION['username'];?>"> <i class="glyphicon glyphicon-trash">Delete</i> </a> <a href="#" class="eb" data-uid="<?php echo $value[0]; ?>" data-toggle="modal" data-target=".bs-example-modal-lg"> <i class="glyphicon glyphicon-edit">Edit</i> </a> </td> </tr> </table>
如果要使用jQuery函数,则应使用变量作为jQuery对象,如下所示
var i = $parent.siblings(".contact-id");
console.log($(d).html());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.