1

我试图在divjquery 指定的元素中找到最深的元素。但是使用的代码正在生成error TypeError: parent.children is not a function.

我从这个链接中找到了这段代码

代码是:

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从这些中找到。

请任何人帮助我....谢谢...

4

3 回答 3

0

您使用字符串调用它,但它需要一个 jQuery 实例。

代替

var itemId=$('#findbefore').prev('.snew').attr('id');//
var item=findDeepestChild(itemId);

你可能想要

var item=findDeepestChild($('#findbefore').prev('.snew'));
于 2013-03-05T16:10:37.183 回答
0

您正在传入itemId,这是给定元素的 ID 属性。我认为您要传递的是元素本身。只需删除attr呼叫,留下这个:

var item = findDeepestChild($("#findbefore").prev(".snew"));
于 2013-03-05T16:10:50.463 回答
0

要获得最深的嵌套元素,请使用

$("#" + parent).find("*").last().siblings().addBack()

http://jsfiddle.net/6ymUY/1/

然后你可以得到 id 数据属性

item.data("id")

http://jsfiddle.net/6ymUY/2/

完整代码:

function findDeepestChild(parent) {
    return $("#" + parent).find("*").last().siblings().addBack();
}
var item=findDeepestChild("S04");
console.log(item)

console.log(item.data("id"));
于 2013-03-05T16:25:13.250 回答