Показать сообщение отдельно
  #1 (permalink)  
Старый 23.09.2011, 14:28
Интересующийся
Отправить личное сообщение для fennick Посмотреть профиль Найти все сообщения от fennick
 
Регистрация: 24.08.2011
Сообщений: 11

Универсальная функция для сворачивания нескольких типовых блоков
На странице находятся несколько таблиц, над каждой из которых находится такая кнопка:

<ul id="icons" style="margin-top: -5px;">
<li class="ui-state-default ui-corner-all" title="Reload">
<span id="do_wrap_steps_table" class="ui-icon ui-icon-arrow-1-n"></span>
</li>
</ul>


Код, сворачивающий блок с ID "steps_table_wrapper":
$('#do_wrap_steps_table').click(function(event) {
	$('#steps_table_wrapper').slideToggle('slow', function() {
		var srcClass = $('#do_wrap_steps_table').attr('class');
        if(srcClass == 'ui-icon ui-icon-arrow-1-n') {
            $('#do_wrap_steps_table').attr('class', 'ui-icon ui-icon-arrow-1-s');
        } else {
            $('#do_wrap_steps_table').attr('class', 'ui-icon ui-icon-arrow-1-n');
        } 
});
});


Поскольку я обращаюсь к каждому блоку "steps_table_wrapper" по ID, реагируя на нажатие кнопок, ID которых пока тоже одинаковы сворачивается только первый из них. Чтобы сворачивать всегда только нужный блок, предполагается такое решение: пронумеровать кнопки и блоки, изменив код JS таким образом, чтобы реакция осуществлялась при нажатии на любом объекте класса "кнопка" и, беря ID кнопки, выделяя ее номер, и выбирая ID блока "steps_table_wrapper" по нему.
Однако, решение кажется мне совершенно не изящным... Есть ли более правильные варианты?
Ответить с цитированием