Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   checkbox.checked (https://javascript.ru/forum/jquery/40692-checkbox-checked.html)

BaVa 15.08.2013 19:07

checkbox.checked
 
Привет всем!
Не пойму, делаю примерно такое:
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript">
$(function() {
    $("body div:first :checkbox").click(function() {
          if(this.checked == true) $("body div:last :checkbox").attr("checked", true);
          else $("body div:last :checkbox").attr("checked", false);
    });
});
</script>
</head>
<body>
<div style="border: 2px solid red;">
   <input type="checkbox">
</div>
<div style="border: 2px solid red; margin-top: 5px;">
   <input type="checkbox"><br>
   <input type="checkbox"><br>
   <input type="checkbox">
</div>
</body>


Смысл в том, чтобы первый чекбокс сбрасывал или устанавливал все чекбоксы, но после первого установки/сброса визуально не показывается что они устанавливаются, хотя в хроме в режиме разработчика (F12) показывается что атрибут checked устанавливается и удаляется.

firefox тоже так делает. IE через раз показывает

Что не так?

danik.js 15.08.2013 19:24

Потому что нефиг дергать атрибуты. Они не предназначены для работы из JS. Их предназначение - задание свойств в HTML-разметке.
Используй prop() вместо attr()

BaVa 15.08.2013 19:39

danik.js,
все работает теперь, спасибо. но не пойму что изменилось. Теперь вообще в атрибуте не устанавливается/удаляется checked
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript">
$(function() {
    $("body div:first :checkbox").click(function() {
          if(this.checked == true) $("body div:last :checkbox").prop("checked", true);
          else $("body div:last :checkbox").prop("checked", false);
    });
});
</script>
</head>
<body>
<div style="border: 2px solid red;">
   <input type="checkbox">
</div>
<div style="border: 2px solid red; margin-top: 5px;">
   <input type="checkbox"><br>
   <input type="checkbox"><br>
   <input type="checkbox">
</div>
</body>


prop() как я, немного, понял устанавливает элементу dom свойство но не меняет ничего в разметке?

danik.js 15.08.2013 20:19

Цитата:

Сообщение от BaVa
prop() как я, немного, понял устанавливает элементу dom свойство но не меняет ничего в разметке?

Тебе сколько раз повторить? Атрибуты нужны только для задания начального значения посредством HTML-разметки. Для динамического изменения свойств, нужно как ни странно динамически изменять свойства

Начальное значение атрибута также отражается в свойстве .defaultChecked

BaVa 15.08.2013 20:40

Понял, спасибо. я думал что свойства и атрибуты - это одно и тоже

ksa 16.08.2013 09:24

Цитата:

Сообщение от BaVa
я думал что свойства и атрибуты - это одно и тоже

Отнють.
http://javascript.ru/tutorial/dom/attributes

BaVa 18.08.2013 13:19

ksa,
поглядю :)


Часовой пояс GMT +3, время: 15:59.