Jquery函数返回的函数代码不是值

Jquery function returning function code not value

本文关键字:函数 返回 Jquery 代码      更新时间:2023-09-26

我正在对嵌套在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中的children标签?

getnestedimg函数中的return语句实际上位于传递给each的嵌套匿名函数中。这就是为什么它不向getnestedimg的调用者返回任何值。您应该按照建议将此值存储在getnestedimg的函数变量中。

此外,我建议您阅读闭包。

我会使用这样的东西:

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

> li img[src]仅选择具有src属性并且是li元素的后代的img标记。.first()只抓第一个。

如果没有元素符合这些条件,则image_str === undefined

   $.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函数中做任何事情(