Функция останавливается после каждого jQuery

0

У меня есть эта функция:

function accentFold(inStr) {
    return inStr.replace(/([àáâãäå])|([ç])|([èéêë])|([ìíîï])|([ñ])|([òóôõöø])|([ß])|([ùúûü])|([ÿ])|([æ])/g,
                          function(str,a,c,e,i,n,o,s,u,y,ae) { 
                              if(a) return 'a'; 
                              else if(c) return 'c'; 
                              else if(e) return 'e'; 
                              else if(i) return 'i'; 
                              else if(n) return 'n';
                              else if(o) return 'o'; 
                              else if(s) return 's'; 
                              else if(u) return 'u'; 
                              else if(y) return 'y'; 
                              else if(ae) return 'ae'; 
                           });
}

function checkResults(searchString) {
    jQuery('.swiper-slide').each(function() {
        var currentElement = $(this);
        var valorname = currentElement.find("p").html();
        var valornamelatin = accentFold(valorname);
        var searchResult = valorname.match(searchString, "i");
        var searchResultLatin = valornamelatin.match(searchString, "i");

        if (searchResult != null || searchResultLatin != null){
            currentElement.show();
            countResults ++;
        } else {
            currentElement.hide();
        }
        swiperCatego01.reInit();
    });

    alert ("One Alert");
}

$(document).ready(function() {
    $('#friendsSearch').keyup(function(){
        var searchString = $(this).val();
        var countResults = "0";
        checkResults(searchString);

        alert(countResults);

        if (countResults == 0) {
            $('#nohayCoincidencias').fadeIn();
        } else {
            $('#nohayCoincidencias').hide();
            swiperCatego01.reInit();
        }
    });

})

Что делает эта функция, так это поиск в списке людей для совпадающих имен через вводное текстовое поле. Функции работают правильно, скрывая имена, которые не содержат искомые критерии, но странно, что я могу получить anithing после функции.each(), я не так хорош с jQuery, и мне интересно, что-то я делаю неправильно, я не могу заставить бдительность работать или что-то еще.

Пример:

http://design.rankon.me/appdesign/invitetemplate.php

Редактировать:

Он фактически работает в Google Chrome, но не работает в Safari iPhone, который является моим конечным пунктом назначения, поэтому решение должно работать на Safari на ios6 +

Теги:
each
search
hide

1 ответ

1
Лучший ответ

Вы объявили countResults внутри функции keyup, поэтому его объявили только внутри этой области. Поэтому при попытке сделать это

countResults ++;

Вы должны объявить переменную глобальной, над всеми функциями:

 var countResults = "0";
  • 1
    Вы правы, за исключением того, что ваша переменная здесь тоже не будет глобальной, поэтому checkResults не сможет ее увидеть, если вы не переместите checkResults внутри обратного вызова .ready() .
  • 1
    Правда, не заметил, что эти функции были за пределами обратного вызова .ready (). отредактированный
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню