Проверьте все флажки на загрузке страницы с jQuery

На загрузке страницы, с помощью jQuery, как я могу установить все флажки в определенном отделении автоматически?

9
задан sevens 27 June 2010 в 07:46
поделиться

3 ответа

$(function(){
    $('#thediv input:checkbox').attr('checked', 'checked');
});
22
ответ дан 4 December 2019 в 06:40
поделиться

Похоже, люди искренне недоумевают, как это сделать в jQuery. Проверка флажка намного проще и эффективнее без него. В следующем примере используются сильные стороны jQuery - выбор и итерация по списку узлов в сочетании с не менее простым свойством DOM checked элементов чекбокса:

$("#myDiv input:checkbox").each(function() {
    this.checked = true;
});

В этом случае несложно полностью отказаться от jQuery:

var div = document.getElementById("myDiv");
var inputs = div.getElementsByTagName("input");
for (var i = 0, len = inputs.length; i < len; ++i) {
    if (inputs[i].type == "checkbox") {
        inputs[i].checked = true;
    }
}

UPDATE

С момента выхода jQuery 1. 6 и prop(), появился разумный способ сделать это в jQuery:

$("#myDiv input:checkbox").prop("checked", true);
11
ответ дан 4 December 2019 в 06:40
поделиться

То, что есть в redquare , будет работать, но в целом лучше использовать с ними true / false , поскольку именно так они нормализованы, вот несколько примеров того, почему это удобная привычка.Например:

$('#myDiv :checkbox').attr('checked', 'checked');
alert($('#myDiv :checkbox').attr('checked')); //this alerts true, not "checked"

Вы можете проверить это здесь.

Вместо этого возьмите в привычку передавать логическое значение, которое является гораздо более универсальным, например:

$(function() {
    $('#myDiv :checkbox').attr('checked', true);
});

Это обеспечивает большую гибкость в более кратком коде, для Например, скажем, у нас есть флажок «Проверить все» вверху, как бы это выглядело?

$('#checkAll').change(function() {
  if(this.checked) {
    $('#subTable :checkbox').attr('checked', 'checked');
  } else {
    $('#subTable :checkbox').removeAttr('checked', 'checked');
  }
});

Теперь нам пришлось добавить новую функцию для выполнения этой работы, .removeAttr () . Честно говоря, это даже то, как документация jQuery делает это в примере . Но вы можете значительно сократить это, если воспользуетесь преимуществами нормализации, которую jQuery выполняет внутренне, например:

$('#checkAll').change(function() {
  $('#subTable :checkbox').attr('checked', this.checked);
});

Это просто то, о чем нужно помнить при написании кода, те же правила применимы к .attr ('disabled ') . Есть и другие области, в которых происходит нормализация ... вероятно, события являются наиболее обширными из них, если вам интересно , вы можете увидеть, что здесь , это уже сделано для вас, используйте это :)

2
ответ дан 4 December 2019 в 06:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: