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 に答える