У меня есть эта функция:
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 +
Вы объявили countResults внутри функции keyup, поэтому его объявили только внутри этой области. Поэтому при попытке сделать это
countResults ++;
Вы должны объявить переменную глобальной, над всеми функциями:
var countResults = "0";
checkResults
не сможет ее увидеть, если вы не переместитеcheckResults
внутри обратного вызова.ready()
.