1

我正在遍历嵌套在 div (.catHOLDER) 中的列表,找到 img 标签并尝试返回 img src。我遇到的问题是该函数返回所有函数源代码而不是字符串值,但奇怪的是,如果我在循环中警告它返回字符串值;

$(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。这就是为什么它没有向getnestedimg. 您应该按照建议将此值存储在 的函数变量中getnestedimg

另外,我建议你阅读闭包

于 2013-01-17T18:53:20.150 回答
1

我会使用这样的东西:

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

> li img[src]仅选择img具有src属性并且是li元素后代的标签。.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 回答