nextUntil() и childElements

Элементы:

<div><input type="checkbox"></input></div> // <-- checked
<div><input type="checkbox"></input></div> // <-- checked
<div><input type="checkbox"></input></div> // <-- unckecked
<div><input type="checkbox"></input></div> // <-- checked

Я хочу использовать nextUntil() с div-elemets, чтобы снять флажки (дочерние элементы) до box3 (сначала не проверять). Есть ли способ?

3 ответа

Решение

Флажки, находящиеся в разных контейнерах, делают это довольно сложным. Флажки в вашем примере НЕ являются братьями и сестрами друг с другом, поэтому nextUntil (или, скорее, prevUntil) не будет работать здесь.

$("input:checkbox:not(:checked)").parent().prevAll("div").find("input:checkbox").prop("checked", false);

Это предполагает, что это не всегда тот же флажок, который установлен.

$('input[type=checkbox]').each(function () {
    if ( ! this.checked ) return false;
    this.checked = false;
});

Примечание: возвращение false изнутри each обратный вызов прерывается из цикла.


Вот скрипка: http://jsfiddle.net/VCD94/

Вы можете попробовать использовать :lt() селектор вместо:

$("div:lt(3)").find('input').prop('checked', false);

Это добавит checked собственность для input элемент внутри div до 4th позиция.

я использовал 3 здесь, потому что lt() основанный на 0 индекс.

Скрипка Демо

Другие вопросы по тегам