Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Определить наличие класса при клике

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
natariga
Отправлено: 14 Декабря, 2011 - 10:08:15
Post Id


Частый гость


Покинул форум
Сообщений всего: 199
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




Подскажите, плис, как сделать следующую хитрость.
Есть стилизованные checkbox, и определить отмеченный он или нет можно по наличию класса niceChecked
Как мне определить, checkbox со значением 5 сейчас был checked или unchecked не используя аттрибут checked, а именно наличие класса niceChecked
Вот такое начало написала, и правильно определяется когда кликнут элемент со значением 5. Теперь осталось только дописать, добавился этому диву класс niceChecked или наоборот убрался.
Т.е. как мне выяснить значение k?
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. $(".niceCheck").click(function(){
  3.   var n = $((this)).find('input[type="checkbox"]').val();
  4.   if (n==5) {
  5.         var k = $(this).find(".niceChecked").length;
  6.         if (k<1)
  7.         {
  8.                 alert('Не чекнули');
  9.         }
  10.         else
  11.         {
  12.                 alert('Выбран');
  13.         }
  14.   }
  15. });
  16.  
  17.  


CODE (html):
скопировать код в буфер обмена
  1.  
  2. <div class="BlockCheckBox">
  3.   <div class="niceCheck niceChecked">
  4.     <input id="ch1" type="checkbox" tabindex="0" value="5" name="modul1">
  5.   </div>
  6. </div>
  7. div class="BlockCheckBox">
  8.   <div class="niceCheck">
  9.     <input id="ch2" type="checkbox" tabindex="0" value="4" name="modul2">
  10.   </div>
  11. </div>
  12.  


Спасибо заранее! Не понял
 
 Top
tuareg
Отправлено: 14 Декабря, 2011 - 10:21:50
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




А Вы можете объяснить суть задачи? Почему нельзя использовать :checked?
Да и еще вот эта строка помоему ничего не вернет судя по разметке.
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. var k = $(this).find(".niceChecked").length;
  3.  

find() ищет потомков.
 
 Top
natariga
Отправлено: 14 Декабря, 2011 - 10:28:29
Post Id


Частый гость


Покинул форум
Сообщений всего: 199
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




tuareg пишет:
А Вы можете объяснить суть задачи? Почему нельзя использовать :checked?
Да и еще вот эта строка помоему ничего не вернет судя по разметке.
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. var k = $(this).find(".niceChecked").length;
  3.  

find() ищет потомков.


ага. вот именно тут проблема.

Суть задачи даже не связана с checkbox, это я зря запутала.

Суть в том, что при клике на div с класом niceCheck надо определить значение input. и если это значение 5, то выясняем есть ли у кликнутого div еще и класс niceChecked
При этом этот класс появляется/исчезает в момент клика на этот див.
Т.е. я понимаю, что мне, конечно, лучше вставить такую проверку именно в место, где идет добавление-удаление этого класс, но там законченная функция, и не очень хочется ее ломать. Но если нет другого варианта, попробую туда...
 
 Top
tuareg
Отправлено: 14 Декабря, 2011 - 10:40:41
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




Тогда проще сделать так. Добавьте класс к input
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <input id="ch1" type="checkbox" [b]class="chek"[/b] tabindex="0" value="5" name="modul1">
  3.  

Все таки лучше использовать простые свойства чем ползать по DOM. Даже если у input-а уже есть класс не важно.
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. $('input.chek').change(function(){
  3.   if($(this).is(':checked') && $(this).val()==5){/**/
  4.    /*тогда что-то делаем*/
  5. }
  6. })
  7.  

Т.е смысла вешать обработчик на div я не вижу. Change на input все равно сработает

P.S Вы плагин какой-то используете??? Если нет, замените div на label style="display:block;"

(Отредактировано автором: 14 Декабря, 2011 - 10:43:00)

 
 Top
natariga
Отправлено: 14 Декабря, 2011 - 10:44:19
Post Id


Частый гость


Покинул форум
Сообщений всего: 199
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




Ага, спасибо! С этой задачей справилась.

Вопрос другой.

Как найти input у которого значение, к примеру, равно 11

Т.е. мне при клике со значением 5 надо сделать disabled (true/false) input со значением 11.....
Ниндзя
 
 Top
tuareg
Отправлено: 14 Декабря, 2011 - 10:50:07
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




А тут тоже просто. Если есть класс на input, то
CODE (javascript):
скопировать код в буфер обмена
  1. $('input.класс[value="11"]').attr('') или prop()

Если класса нет тогда все
CODE (javascript):
скопировать код в буфер обмена
  1. $('div.класс input[value="11"]')

Я пишу навскидку, поэтому могут быть ошибки, посмотрите сами правильный вариант селекторов
 
 Top
Viper
Отправлено: 14 Декабря, 2011 - 10:52:04
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




Ёмае Улыбка)) Вот это вы огурцы с помидорами изобретаете Улыбка

http://api[dot]jquery[dot]com/hasClass/


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
tuareg
Отправлено: 14 Декабря, 2011 - 10:58:03
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




Viper И... ???? Суть то проблемы другая.
Ну определил я класс? Кстати Вы уверены, что он правильно определится? Он же ставится не в этой функции??? И дальше мы снова идем гулять и перебирать DOM в поисках другого div-а в котором есть input, у которого значение value=11?? Вы думаете это оптимальный вариант?
 
 Top
natariga
Отправлено: 14 Декабря, 2011 - 11:00:18
Post Id


Частый гость


Покинул форум
Сообщений всего: 199
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




Viper пишет:
Ёмае Улыбка)) Вот это вы огурцы с помидорами изобретаете Улыбка

http://api.jquery.com/hasClass/


вовсе и не огурцы!
и не помидоры!

когда класс искали, он же появляется в момент клика, а не просто - есть или нет. Хотя вначале я именно эту функцию хотела.
А щас мы уже и не класс воовсе ищем, а значение!

А вообще, всем, конечно, огромное спасибо!!!
Вопрос почти решила
Улыбка
(Добавление)
tuareg пишет:
А тут тоже просто. Если есть класс на input, то
CODE (javascript):
скопировать код в буфер обмена
  1. $('input.класс[value="11"]').attr('') или prop()

Если класса нет тогда все
CODE (javascript):
скопировать код в буфер обмена
  1. $('div.класс input[value="11"]')

Я пишу навскидку, поэтому могут быть ошибки, посмотрите сами правильный вариант селекторов


а find не надо?
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2.  $('#MainChoiseModul').find('input[value="12"]').attr('disabled','disabled');
  3.  
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


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



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB