测试里面的.each()和爆发

时间:2010-12-09 01:34:50

标签: javascript jquery each

我在这里尝试做的是使用jquery .each()遍历图像列表,并测试我传递给函数的src是否已经存在于列表中。如果不是,我想添加它,如果我不想做任何事情。我在哪里放置代码以添加新图像baring我只想在每次()迭代结束后执行此操作

这是我到目前为止所拥有的

function addFriendImage(imageSrc){ //Adds the image of the friend to the sidebar

    var imgReturn = $('ul.friendImages li img').each(function(){
        var currentImageSrc = $(this).attr('src');
        if(currentImageSrc == imageSrc){
            return false;
        }
    });

    if(imgReturn != false){//does this make sense?
        //I'll add an new image, (I can work out to do this bit myself)
    }
}

我是javascript和jquery的新手,所以我的语法可能出错了。 任何反馈将不胜感激。

2 个答案:

答案 0 :(得分:1)

您可以使用jQuery [attribute="value"]选择器跳过循环并找到所有具有您正在寻找的src属性的图像:

function addFriendImage(imageSrc){ //Adds the image of the friend to the sidebar

    if ($('ul.friendImages li img[src="' + imageSrc + '"]').length) {
       // img with src attribute matching imageSrc exists
    } else {
       // img doesn't exist
    }

}

您无法从$.each返回值,因为它始终返回用于调用链接的jQuery对象。但是,返回true / false确实有特殊含义:返回false的行为类似于break;语句并且迭代停止,而返回true的行为类似于continue语句,停止当前迭代早,继续下一个。

答案 1 :(得分:1)

你可以避免所有额外的东西并直接查询。

if(!($('ul.friendImages li img[src=' + imageSrc + ']').length)){
}