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
Форумы портала PHP.SU :: Версия для печати :: инкремент класса или id
Форумы портала PHP.SU » Клиентская разработка » JavaScript & VBScript » инкремент класса или id

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

1. Evgeniux - 04 Октября, 2012 - 22:08:27 - перейти к сообщению
Добрый вечер. есть вот такой код
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <script type="text/javascript">
  3. jQuery (function()
  4. {
  5. jQuery('.button').click(function()
  6. {
  7. jQuery('#blok1').slideUp(1000);
  8. jQuery('#blok2').slideDown(1000);
  9. });
  10. });
  11. </script>
  12.  
  13.  

Который показывает или скрывает блок по клику кнопки. Проблема в том, что блоки берутся из базы в цикле, у всех блоков id разный (1, 2 и т.д.), а вот как сделать инкремент блока на jQuery? Читал, что как вариант, применяем регулярное выражение, которое ищет заданные одинаковые блоки и делает инкремент их id. Но это громоздко, уверен, что есть решение куда проще, но пока не нашел его, если кто подскажет буду очень благодарен.
2. armancho7777777 - 04 Октября, 2012 - 22:10:47 - перейти к сообщению
Evgeniux пишет:
как сделать инкремент блока на jQuery

Вы это о чём?
3. Evgeniux - 04 Октября, 2012 - 22:30:58 - перейти к сообщению
есть функция (см выше) которая показывает или скрывает блок. с определенным id. Если таких блоков будет много (они выводятся из базы, кол-во не фиксировано). У всех будут разные id. Как можно переделать функцию, чтобы она работала для каждого такого блока отдельно, А то если у всех блоков одинаковый id, то при нажатии кнопки все блоки показываются, а должен показываться, только блок у которого нажали кнопку.
4. Bio man - 04 Октября, 2012 - 22:37:15 - перейти к сообщению
5. armancho7777777 - 04 Октября, 2012 - 22:44:19 - перейти к сообщению
Evgeniux пишет:
А то если у всех блоков одинаковый id

В корне у Вас уже не верно.
Не должно быть несколько элементов с одинаковым ID.
Задайте им всем одинаковый класс и оберните все эти блоки в один.
Где находится кнопка с классом button ?
Примерную разметку покажите, что ли ...
6. Evgeniux - 04 Октября, 2012 - 22:58:03 - перейти к сообщению
armancho7777777 пишет:
Evgeniux пишет:
А то если у всех блоков одинаковый id

В корне у Вас уже не верно.
Не должно быть несколько элементов с одинаковым ID.
Задайте им всем одинаковый класс и оберните все эти блоки в один.
Где находится кнопка с классом button ?
Примерную разметку покажите, что ли ...

вот, я о том же, это уже сделал: id при выводе из базы у всех блоков разный.

что-то типа:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <div id="cont_mess">
  3. <div id="cont_them">
  4.    
  5.           {$them1}
  6.          </div>
  7.          <div id="cont_auth">
  8.           {$author1}
  9.          </div>
  10.          <div class="cont_read">
  11.           <a href="#" id="readmore{$i}"> Читать сообщение</a> // переменная i увеличивается каждый раз на 1
  12.          </div>
  13.  
  14.           <div id="cont_text">
  15.          {$text1}
  16.          </div>
  17.          <div id="cont_option">
  18.          <div id="cont_date">
  19.           {$date1}
  20.          </div>
  21.          <div id="cont_opt">
  22.          <a href='drop_post.php?id={$id1}'><img src="../images/delete.png" alt="Удалить"/></a>
  23.          </div>
  24.         </div>
  25. </div>
  26.  
7. armancho7777777 - 04 Октября, 2012 - 23:02:57 - перейти к сообщению
Вы можете своими словами объяснить что Вы хотите реализовать ?
Лично я Вас не пойму.
armancho7777777 пишет:
Где находится кнопка с классом button ?
8. Okula - 04 Октября, 2012 - 23:03:25 - перейти к сообщению
CODE (javascript):
скопировать код в буфер обмена
  1. function showBlock(id) {
  2.     $(id).slideToggle("slow");
  3. }

Код кнопки:
PHP:
скопировать код в буфер обмена
  1. <input type="button" onclick="showBlock(<?PHP echo $id; ?>)" value="Показать">
9. armancho7777777 - 04 Октября, 2012 - 23:07:40 - перейти к сообщению
http://jsfiddle[dot]net/Nkf5Y/1/
10. DelphinPRO - 04 Октября, 2012 - 23:12:40 - перейти к сообщению
Я правиьно понимаю что у вас много кнопок и много блоков которые должны открываться по клику на свою кнопку?

Могу подсказать два решения.

1. Если каждая кнопка и открываемый блок находятся в одном контейнере.

CODE (html):
скопировать код в буфер обмена
  1. <div class="cont">
  2.   <a href="#" class="button">Кнопка 1</a>
  3.   <!-- ... -->
  4.   <div class="slide">
  5.     Открывающийся блок 1
  6.   </div>
  7. </div>
  8.  
  9. <div class="cont">
  10.   <a href="#" class="button">Кнопка 2</a>
  11.   <!-- ... -->
  12.   <div class="slide">
  13.     Открывающийся блок 2
  14.   </div>
  15. </div>


CODE (javascript):
скопировать код в буфер обмена
  1. $('.button').click(function(){
  2.   $('.slide').slideUp(); // Закрываем все открытые блоки
  3.   $(this).closest('.cont').find('.slide').slideDown(); // Открываем нужный
  4. });


2. Более универсальный вариант
идентификаторы блоков передаёте в хеше ссылки

CODE (html):
скопировать код в буфер обмена
  1. <a href="#block1" class="button">Кнопка 1</a>
  2. <a href="#block2" class="button">Кнопка 2</a>


сами блоки:

CODE (html):
скопировать код в буфер обмена
  1. <div class="slide" id="block1">Открывающийся блок 1</div>
  2. <div class="slide" id="block2">Открывающийся блок 2</div>


CODE (javascript):
скопировать код в буфер обмена
  1. $('.button').click(function(){
  2.   $('.slide').slideUp(); // Закрываем все открытые блоки
  3.   $(this.hash).slideDown(); // Открываем нужный
  4. });
11. armancho7777777 - 04 Октября, 2012 - 23:15:06 - перейти к сообщению
DelphinPRO пишет:
CODE (javascript):
скопировать код в буфер обмена
  1. $('.slide').slideUp(); // Закрываем все открытые блоки

CODE (javascript):
скопировать код в буфер обмена
  1. $('.slide:visible').slideUp();

(Добавление)
DelphinPRO пишет:
2. Более универсальный вариант
идентификаторы блоков передаёте в хеше ссылки

+1
12. Evgeniux - 04 Октября, 2012 - 23:21:16 - перейти к сообщению
спасибо буду пробовать.
13. Evgeniux - 06 Октября, 2012 - 21:18:12 - перейти к сообщению
Всем спасибо за помощь. Помогло.

 

Powered by ExBB FM 1.0 RC1