Между двумя существует одно важное, и полезное, различие.
, поскольку.ForEach использует for
цикл для итерации набора, это допустимо (редактирование: до .net 4.5 - измененная реализация и они оба бросок):
someList.ForEach(x => { if(x.RemoveMe) someList.Remove(x); });
, тогда как foreach
использование перечислитель, таким образом, это не допустимо:
foreach(var item in someList)
if(item.RemoveMe) someList.Remove(item);
<час> tl; доктор: НЕ Делайте copypaste этот код в Ваше приложение!
Этими примерами не является лучшая практика, они должны только продемонстрировать различия между ForEach()
и foreach
.
объекты Удаления из списка в for
цикл может иметь побочные эффекты. Наиболее распространенный описан в комментариях к этому вопросу.
Обычно, если бы Вы надеетесь удалять несколько объектов из списка, Вы хотели бы разделить определение который объекты удалить из фактического удаления. Это не сохраняет Ваш код компактным, но это гарантирует, что Вы не пропускаете объектов.
Вы можете выполнить проверку, используя селектор, как предложено выше, и так:
if ( $("div.test:visible").length === 0)
$("#wrap1").hide( );
Лучший способ узнать, все ли они видны, - это подсчет для видимости, такой же, как и общее количество.
$("#wrap1 div:visible").length == $("#wrap1 div").length
jQuery("#wrap1").find("div").each(function()
{
if ($(this).is(':hidden'))
{
}
}
);
Этот фрагмент зациклит все Если вы по-прежнему хотите, чтобы ваш Нет веских причин для нумерации классов (кроме крайних случаев). Ваша нумерация усложняет приведенный выше код, а также ваш CSS. Проще было бы просто убрать нумерацию из
$("div[id^='wrap']").each(function() {
var wrap = $(this);
if(wrap.children("div[class^='test']:visible").length == 0) {
wrap.hide();
} else {
wrap.show();
}
});
$("div[id^='wrap']").each(function() {
var wrap = $(this);
if(wrap.children("div[class^='test']").length > 0 &&
wrap.children("div[class^='test']:visible").length == 0) {
wrap.hide();
} else {
wrap.show();
}
});
теста
. (Вам это не нужно, так как вы всегда можете выбрать их подмножество, используя : lt (index)
, :