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

Beriagts 03.08.2011 16:51

background :checked
 
Возникла проблема, как мне нужно проверить если чек бокс активен то меняем фон родителя, написал что такое;
if($('.stlchek  input:checked'))
        {
            $('.stlchek').css('background-position','0 0');
        }
        else
        {
            $('.stlchek').css('background-position','0 -122px');
        }

walik 03.08.2011 17:04

if($('.stlchek  input:checked')*!*.length*/!*)

Beriagts 03.08.2011 17:12

Цитата:

Сообщение от walik (Сообщение 117090)
if($('.stlchek  input:checked')*!*.length*/!*)

извините, а можно для мало имущих пару слово добавить?

ваый 03.08.2011 17:15

Проверяет, что коллекция не пустая. Для пустой выборки приведение к булеву типу все равно даст true.

walik 03.08.2011 17:25

Цитата:

Сообщение от ваый
Для пустой выборки приведение к булеву типу все равно даст true.

то есть, если не будет ни одного элемента, то все равно true ?
ошибаешься:
<input type="checkbox" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script>
$('input:checkbox').click(function() {
   if ($('input:checked').length)
      $('body').css({backgroundColor: 'red'});
   else
      $('body').css({backgroundColor: 'white'});
});
</script>

ваый 03.08.2011 17:43

Цитата:

Сообщение от walik
то есть, если не будет ни одного элемента, то все равно true ?
ошибаешься:

Нет, не ошибаюсь:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script>
var $collection = $('#this-element-does-not-exist-on-the-page');
if ($collection) {
    alert('А может быть, все же где-то он есть?');
}

if ($collection.size()) { // $collection.length
    alert('Нету..');
}
</script>

walik 03.08.2011 17:49

Цитата:

Сообщение от ваый
if ($collection) {

Что нам показывает этот if ? $collection - это обычный jquery'евский объект, естественно что будет true

Цитата:

Сообщение от ваый
if ($collection.size())

правельно, нет ни одного элемента, условие не сработало (false)

ваый 03.08.2011 17:51

Ну так в об этом и говорил :)

Beriagts 03.08.2011 17:56

а где сейчас мою ошибка?
$('.stlchek input:checkbox').ready(function() {
            if ($('.stlchek input:checked').length)
               $(this).parents('.stlchek').css({backgroundColor: 'red'});
            else
               $(this).parents('.stlchek').css({backgroundColor: 'white'});
         });

walik 03.08.2011 17:56

Так ты чей IF прокомментировал ТС'а или мой (так как в моем было .length) ? :)
Я подумал что твой комментарий к моему сообщению относится))

Beriagts,
Я хз если у инпута есть ready. Но тебе надо при загрузки страницы выполнить ? поставь тогда ready на документ

ваый 03.08.2011 18:01

Конечно, TC'а..

Beriagts 03.08.2011 18:05

Цитата:

Сообщение от walik (Сообщение 117107)
Так ты чей IF прокомментировал ТС'а или мой (так как в моем было .length) ? :)
Я подумал что твой комментарий к моему сообщению относится))

Beriagts,
Я хз если у инпута есть ready. Но тебе надо при загрузки страницы выполнить ? поставь тогда ready на документ

Да мне нужно при загрузки страницы что бы фон поменялся, то есть если активный блок красный иначе белый.

walik 03.08.2011 18:12

мб так
$(function() {
   if //Условие и т.д. тот скрипт.
});

Beriagts 03.08.2011 18:18

Цитата:

Сообщение от walik (Сообщение 117118)
мб так
$(function() {
   if //Условие и т.д. тот скрипт.
});

Еще раз показываю что у меня есть и почему я не могу понять что проблема.
$(function() {
               if ($('.stlchek input:checked').length)
               {
               $(this).parents('.stlchek').css({backgroundColor: 'red'});
               }
            else
            {
               $(this).parents('.stlchek').css({backgroundColor: 'white'});
               }

            });

<form style="width: 400px;height: 400px;margin: 400px auto;">
            <div class="stlchek"><input type="checkbox" checked=""/></div>
            <div class="stlchek"><input type="checkbox"/></div>
        </form>

walik 03.08.2011 18:20

А в чем собсно проблема ? при загрузки страницы, ни одного выбранного чекбокса соответственно фон белый или что ?
Скажите что вы получаете и чего ожидаете

Beriagts 03.08.2011 18:23

Цитата:

Сообщение от walik (Сообщение 117123)
А в чем собсно проблема ? при загрузки страницы, ни одного выбранного чекбокса соответственно фон белый или что ?
Скажите что вы получаете и чего ожидаете

Проблема в том что классу .stlchek при загрузки страницы не добавляться цвет бекгроунда.

walik 03.08.2011 18:37

Хммм, не обратил внимание что не правильно используете
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script>
$(function() {
   $('.stlchek').css({backgroundColor: 'white'});
   $('.stlchek input:checked').each(function() {
      $(this).parents('.stlchek').css({backgroundColor: 'red'});
   });
});
</script>

<form>
            <div class="stlchek"><input type="checkbox" name="c" checked=""/></div>
            <div class="stlchek"><input type="checkbox" name="d" /></div>
        </form>


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