как эмулировать return на два уровня в jquery
$('div').each(function () { $('p').each(function () { return false }) }) Нужно выйти и из внешнего цикла, как это сделать? Пробовал try...catch и создавать временную переменную. Есть способы лучше? Или хотя бы как проверить во внешнем цикле, что внутренний цикл завершился не до конца? |
('div').each(function () { var result = true; $('p').each(function () { result = false; return false; }) if (!result) { return false; } }) |
Это и есть способ с временной переменной
|
Цитата:
|
Да что такое селекторы, я знаю, но все равно не догоняю как это сделать. Вот мой пример
$.grep(arr, function () { $container.find('span').each(function () { if (...) return true; return false; }) }) Что и как там совмещать? Тут понятно, что return должен как-то возвращать из внешней функции |
вот твой вопрос.
$('div').each(function () { var ret=true; $('p').each(function () { if( ...) ret=false; return ret; }) return ret; }) c grep чуток всё нетак, если each это цикл то grep это фильтр. А фильтр нельзя завершить, он в любом случае переберёт все элементы и опять же, мне кажется будет быстрее если не перебирать элементы в массиве и потом искать для каждого элементы в dom а наоборот перебирать элементы dom и искать соответствия в массиве, так как работа с массивом намного быстрее чем с dom Поясни пожалуйста ты массив пытаешся отфильтровать или что ?. |
Да, извиняюсь, пример нужно было точнее сформулировать. array.every не курил, но судя по всему те же яйца, только в профиль. Там же все равно колбек используется, который будет такой же внутренней функцией.
Впрочем, для своего конкретного случая придумал более изящный вариант http://javascript.ru/forum/223837-post5.html (верхний цикл) Второй раз ухожу от проблемы выхода из вложенных функций. Надеюсь, что и потом всегда будет проносить) |
Точно! Будем пробовать!
|
Часовой пояс GMT +3, время: 04:33. |