Тестирование Inside .each () и выход из него - PullRequest
0 голосов
/ 09 декабря 2010

То, что я пытаюсь сделать здесь, - это просмотреть список изображений с помощью jquery .each () и проверить, существует ли src, который я передаю функции, уже внутри списка. Если это не так, я хочу добавить его, если я не хочу ничего делать. Куда мне поместить код для добавления нового изображения, помня об этом? Я хочу делать это только после того, как каждая () итерация закончится

Вот что у меня есть

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 ]

1 голос
/ 09 декабря 2010

Вы можете избежать всех лишних вещей и запросить их напрямую.

if(!($('ul.friendImages li img[src=' + imageSrc + ']').length)){
}
1 голос
/ 09 декабря 2010

Вы можете пропустить цикл и просто найти все изображения с нужным атрибутом src, используя селектор jQuery [attribute="value"]:

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, останавливая текущую итерацию рано и переходя к следующей.

...