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 :: Функция Jquery срабатывает только один раз по событию клика

 PHP.SU

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


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

> Без описания
razorg1991
Отправлено: 13 Ноября, 2014 - 12:09:49
Post Id


Частый гость


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


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




HTML следующий (есть вкрапления php - неважно)

CODE (html):
скопировать код в буфер обмена
  1.  
  2. <form id="required-form" class="margintop" action="" method="POST">
  3.     <div class="submenu text-right">
  4.         <button class="btn btn-danger" type="submit" name="delete_list"><span class="glyphicon glyphicon-floppy-remove"></span><br /><? echo LN_DOWNLOAD_DELETE_LIST_PRODUCTS ?></button>
  5.         <button class="btn btn-danger" type="reset"><span class="glyphicon glyphicon-remove"></span><br /><? echo LN_DOWNLOAD_RESET ?></button>
  6.         <button class="btn btn-success" type="submit" name="download_list"><span class="glyphicon glyphicon-download"></span><br /><? echo LN_DOWNLOAD_START_DOWNLOAD ?></button>
  7.     </div>
  8.         <div class="alert alert-info">
  9.                 <h4><? echo LN_CHOOSE_LIST_PRODUCTS ?></h4>
  10.                 <p><? echo LN_CHOOSE_LIST_PRODUCTS_DESC ?></p>
  11.         </div>
  12.         <div class="table-responsive">
  13.             <table class="table table-bordered">
  14.                 <thead>
  15.                     <tr>
  16.                         <th class="nowrap th_align"><span id="check_all" rel="required-form">Отметить все</span><span id="uncheck_all" rel="required-form">Убрать все</span></th>
  17.                         <th class="nowrap"><span class="glyphicon glyphicon-bullhorn"></span> <? echo LN_DOWNLOAD_NAME_LIST ?></th>
  18.                         <th class="nowrap th_align"><span class="glyphicon glyphicon-shopping-cart"></span> <? echo LN_DOWNLOAD_COUNT_PRODUCTS ?></th>
  19.                         <th class="nowrap th_align"><span class="glyphicon glyphicon-folder-open"></span> <? echo LN_DOWNLOAD_TYPE ?></th>
  20.                         <th class="nowrap th_align"><span class="glyphicon glyphicon-time"></span> <? echo LN_DOWNLOAD_DATETIME ?></th>
  21.                         <th class="nowrap th_align"><span class="glyphicon glyphicon-floppy-disk"></span> <? echo LN_DOWNLOAD_READY_TO_DOWNLOAD ?></th>
  22.                     </tr>
  23.                 </thead>
  24.                 <tbody>
  25.                     <?php DownloadProducts::listProducts(); ?>
  26.                 </tbody>
  27.             </table>
  28.         </div>
  29. </form>
  30.  


JS отмечает и снимает все чекбоксы

CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. $(document).ready( function() {
  3.  
  4.         $("#uncheck_all").css('display','none');
  5.        
  6.         $("#check_all").click( function() {
  7.            $("#" + $(this).attr('rel') + " input:checkbox:enabled").attr('checked', true);
  8.            $("#check_all").css('display','none');
  9.            $("#uncheck_all").css('display','block');
  10.             return false;
  11.         });
  12.  
  13.  
  14.         $("#uncheck_all").click( function() {
  15.            $("#" + $(this).attr('rel') + " input:checkbox:enabled").attr('checked', false);
  16.            $("#uncheck_all").css('display','none');
  17.            $("#check_all").css('display','block');
  18.             return false;
  19.         });
  20.     });
  21.  


Т.е. Появление и скрытие происходит всегда по клику, а вот выделение чекбоксов происходит только при первом клике Не понял (т.е. клик раз - все выделилось, клик два - все снялось, клик три - ничего не выделяется, только скрываются и появляются элементы с айдишниками).

Почему не пойму?
 
 Top
Viper
Отправлено: 13 Ноября, 2014 - 12:24:35
Post Id



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


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


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




:enabled зачем?


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


Частый гость


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


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




Viper пишет:
:enabled зачем?


Ну убрал я :enabled, но ничего не изменилось.
Самое интересное то, что при повторных кликах по элементам, в firebug появляется и исчезает атрибут checked у инпутов, но визуально в браузере их нет. И соответственно если дальше выполнять php скрипт, то он также выдает ошибку о пустых элементах. И такая ситуация наблюдается во всех браузерах.

Уже даже изменил немного js

CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. $(document).ready( function() {
  3.  
  4.         $("#uncheck_all").css('display','none');
  5.        
  6.         $("#check_all").click( function() {
  7.            
  8.            $('.element_check').attr('checked', true);
  9.            $("#check_all").css('display','none');
  10.            $("#uncheck_all").css('display','block');
  11.             return false;
  12.         });
  13.  
  14.  
  15.         $("#uncheck_all").click( function() {
  16.            
  17.            $('.element_check').attr('checked', false);
  18.            $("#uncheck_all").css('display','none');
  19.            $("#check_all").css('display','block');
  20.             return false;
  21.         });
  22.     });
  23.  


То же самое - работает, но как-то неккоректно, консоль по ошибкам молчит Не понял
(Добавление)
Все разобрался, надо attr поменять на prop, attr видимо не совсем корректно работает в новых версиях JQuery
 
 Top
esterio
Отправлено: 13 Ноября, 2014 - 13:32:16
Post Id



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


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


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




attr - это смена атрибута, prop - соответсвенно свойства DOM елемента. это нужно различать. в большинстве случаев смена свойства автоматически изменяет атрибут и наоборот. но есть такие свойства которые так не делают (checked, selected например)

(Отредактировано автором: 13 Ноября, 2014 - 13:33:13)

 
 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