我正在尝试使用jquery在指定的div
中找到最深的元素。但是使用的代码产生了error
TypeError: parent.children is not a function
。
我从此link
中找到了此代码代码是:
function findDeepestChild(parent) {
var result = {depth: 0, element: parent};
parent.children().each( //Here I getting the error TypeError: parent.children is not a function
function(idx) {
var child = $(this);
var childResult = findDeepestChild(child);
if (childResult.depth + 1 > result.depth) {
result = {
depth: 1 + childResult.depth,
element: childResult.element};
}
}
);
return result;
}
---------------------------------------------------------------------------------------
$(document).on('keypress','#sendComment', function(e) {
if(e.keyCode==13){
var itemId=$('#findbefore').prev('.snew').attr('id');//
var item=findDeepestChild(itemId);
alert(item);
}
});
我的divs
是:
<div id="S04" class="snew" style="display: block;">
<div class="author-image"></div>
<span>xyz shared the image xyz</span>
<div class="s-content">
<div class="s-message"></div>
<div class="shpicture">
<img class="SharedImage" width="100%" height="100%" data-shareid="1" data-alid="1" data-id="1" alt="xyz" src="data:image/jpeg;base64,">
</div>
</div>
</div>
<div class="SPcommentbox">
<div class="comment">
<div class="commenter-image"></div>
<div class="addcomment">
<input class="commentbox" type="text" placeholder="Write a comment...">
</div>
</div>
</div>
我需要从这些中找到img
。
请有人帮助我......谢谢...
答案 0 :(得分:0)
你用字符串调用它,但它期待一个jQuery实例。
而不是
var itemId=$('#findbefore').prev('.snew').attr('id');//
var item=findDeepestChild(itemId);
你可能想要
var item=findDeepestChild($('#findbefore').prev('.snew'));
答案 1 :(得分:0)
您正在传递itemId
,这是给定元素的ID属性。我认为你要传递的是元素本身。只需删除attr
来电,即可:
var item = findDeepestChild($("#findbefore").prev(".snew"));
答案 2 :(得分:0)
要获得最深的嵌套元素,请使用
$("#" + parent).find("*").last().siblings().addBack()
然后您可以使用
获取id数据属性item.data("id")
完整代码:
function findDeepestChild(parent) {
return $("#" + parent).find("*").last().siblings().addBack();
}
var item=findDeepestChild("S04");
console.log(item)
console.log(item.data("id"));