1

div(.catHOLDER)内にネストされたリストを反復処理し、imgタグを見つけて、imgsrcを返そうとしています。私が抱えている問題は、関数が文字列値ではなくすべての関数ソースコードを返すことですが、奇妙なことに、ループでアラートを出すと文字列値が返されます。

$(document).ready(function(){
function getnestedimg() {
    $('.catHOLDER ul').children('li').each(function(i,value) { 
            var imgstr = $(value).find('img').attr('src');
            if (imgstr !== undefined) {
                alert(imgstr);
            }
    });
}
getnestedimg();
});

上記のコードは、img srcのパスを含むアラートを表示しますが、imgstrを返そうとすると、代わりに関数コードが返されます。

$(document).ready(function(){
function getnestedimg() {
    $('.catHOLDER ul').children('li').each(function(i,value) { 
            var imgstr = $(value).find('img').attr('src');
            if (imgstr !== undefined) {
                return imgstr;
            }
    });
}
getnestedimg();
});

以下を返します。

function getnestedimg() {
                $('.catHOLDER ul').children('li').each(function(i,value) { 
                    var imgstr = $(value).find('img').attr('src');
                        if (imgstr !== undefined) {
                            //alert(imgstr);
                        //ret urn gotya;
                        return imgstr.val();
                        }
                });
            }

誰かが私の窮状で私を助けることができますか、またはdivでネストされた子タグを反復処理するためのより良い方法がありますか?

4

3 に答える 3

1

関数内のreturnステートメントgetnestedimgは、実際には、に渡すネストされた無名関数内にありますeach。これが、の呼び出し元に値を返さない理由ですgetnestedimggetnestedimg提案されているように、この値をの関数変数に格納する必要があります。

また、クロージャーについてもお読みになることをお勧めします。

于 2013-01-17T18:53:20.150 に答える
1

私はこのようなものを使用します:

var image_src = $('.catHOLDER ul > li img[src]').first().attr('src');

> li img[src]属性を持ち、要素の子孫でimgあるタグのみを選択します。最初のものだけをつかみます。srcli.first()

これらの条件に一致する要素がない場合は、image_str === undefined

于 2013-01-17T18:55:42.713 に答える
0
   $.fn.extend({
      getsrc : function() {
         return $(this).find(">ul> li img").map(function() {
                   return $(this).attr("src"); 
                   });
             }
    });

   $(document).ready(function() {
        var catHOLDERimgsrc = new Array();
        catHOLDERimgsrc=$(".catHOLDER").getsrc();
        console.log(catHOLDERimgsrc);
   })

しかし、これのためのプラグイン?私はそれを直接行います:

   $(document).ready(function() {
        var catHOLDERimgsrc = new Array();
        catHOLDERimgsrc=$(".catHOLDER").find(">ul> li img").map(function() {
                   return $(this).attr("src"); 
                   });
        console.log(catHOLDERimgsrc);
   })

imoは、配列に配置された値のセットを取得するための最も優れた方法です(つまり、すべての画像をsrcにする場合はセレクターを変更し、十分でない場合はmap関数内で何でも実行できます)。

于 2013-01-17T19:06:31.467 に答える