действие Один раз за цикл
Делаю поиск по id в таблице
если есть совпадение, тогда должен перейти по ссылке а если нет совпадений - нужно вывести сообщение проблема в том, что такая конструкция будет выводить сообщение несколько раз, пока не дойдет до нужной строки //поиск по ID $('#filter-id').children('button').click(function () { var getID = $.trim($(this).prev('input').val()); $(getTable).children('tr').children('.item_id').each(function () { if ($.trim($(this).text()) == getID) { var getLink = $(this).next('.item_link').children().children('a').attr('href'); location.href = getLink; return false; } else{ alert('Не найдено с таким ID'); } }); }); как эту проблему решить, ума не приложу |
alexmixaylov,
Перед циклом создать флаг результата со значением true. Вместо alert присвоить флагу значение false. После цикла по флагу false выдать alert. |
Спасибо за помощь
понял принцип все получилось |
:write: а просто перенести строку 11 в 14 и выкинуть else?
|
делал так, но выводить алерт нужно только тогда, когда нет совпадений
сделал так var flagSearch = true; перед циклом потом условие if (flagSearch == false) {alert();} |
Цитата:
Цитата:
|
как то странно получается
по логике, вы правы если совпадает условие в цикле, срабатывает переадресация человек уходит на другую страницу и дальнейшее выполнение скрипта прерывается плюс там стоит return false; и пока весь цикл не отработает, сценарий который идет после цикла не должен выполнятся но получается что после того как начал работать each начинает сразу работать следующая команда я добавил на алерт setTimeout теперь корректно отрабатывает но это наверное не сильно правильно //поиск по ID $('#filter-id').children('button').click(function () { var getID = $.trim($(this).prev('input').val()); $(getTable).children('.item_id').each(function () { if ($.trim($(this).text()) == getID) { var getLink = $(this).next('.item_link').children().children('a').attr('href'); location.href = getLink; return false; } }); setTimeout(function () { alert(getID + ' не найдено с таким ID\nПопробуйте изменить параметры поиска или свяжитесь с менеджером направления'); }, 500); }); |
Цитата:
|
Часовой пояс GMT +3, время: 21:59. |