Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.09.2010, 15:30
Новичок на форуме
Отправить личное сообщение для alexey_spb Посмотреть профиль Найти все сообщения от alexey_spb
 
Регистрация: 01.09.2010
Сообщений: 3

Авто-селект чекбоксов в таблице
Прошу прощения, вопрос наверняка очень элементарный.
Но я только сейчас начал изучать jQuery (а также JS и CSS).


Я думаю, что знатоки мне сразу же дадут ответ, т.к. задача стандартная.

Постановка задачи:
Есть таблица, в которой надо реализовать функционал чекбокса "выбрать все". Т.е. стандартно, в шапке есть чекбокс, если его выбрать, то все чекбоксы данного столбца автоматически тоже должны ставиться в checked == true.

Предложенное мною решение:
1. На чек-бокс в шапке таблицы вешаем JS-функцию
2. Ко всем нужным чекбоксам внутри таблицы цепляем пустой класс (чтобы можно было впоследствии их идентифицировать по имени этого класса).

В итоге, JS-функция выглядит следующим образом:

function selectAllRows(param) {
 jQuery('.columnCheckBoxStyleClass').each(function() {this.checked = param});
}


Возникшая проблема:
Всё прекрасно работает до тех пор, пока на странице всего одна такая таблица. Но когда на странице таких таблиц две, то при нажатии на чекбокс в одной из таблиц происходит выборка строк сразу в двух таблицах.
Решение тут напрашивается следующее, при вызове функции необходимо передавать id таблицы, в которой надо оперировать со строками. Но вот КАК и ЧТО делать с этим id таблицы, я не знаю, т.к. jQuery только начал изучать.

Вопрос:
Как преобразовать тело функции, чтобы имея на входе 2 параметра (id таблицы и проставляемый параметр в чекбоксы), проставить/убрать галки с чекбоксов только требуемой таблицы?

Спасибо за помощь
Ответить с цитированием
  #2 (permalink)  
Старый 01.09.2010, 15:34
Новичок
Отправить личное сообщение для inGray Посмотреть профиль Найти все сообщения от inGray
 
Регистрация: 03.08.2010
Сообщений: 230

$('#idnaблицы.columnCheckBoxStyleClass')
__________________
Не хочешь, чтобы тебя послали? Не спрашивай куда идти.
Ответить с цитированием
  #3 (permalink)  
Старый 01.09.2010, 16:16
Новичок на форуме
Отправить личное сообщение для alexey_spb Посмотреть профиль Найти все сообщения от alexey_spb
 
Регистрация: 01.09.2010
Сообщений: 3

Вот блиииин

Дело в том, что я использую не голый HTML, а JSF.
Поэтому на клиент выплевывается HTML c айдишником таблицы вот в таком формате: 'formId:tableId'. Т.е. всё, что находится в кавычках - это и есть айдишник таблицы.

И когда в JS пытается выполниться вот такое:
jQuery('ormId:tableId.columnCheckBoxStyleClass').each(function() {this.checked = param});

То в консоль выдается сообщение: "Неизвестный псевдокласс или псевдоэлемент «tableId»."
Ответить с цитированием
  #4 (permalink)  
Старый 02.09.2010, 06:31
Профессор
Отправить личное сообщение для exec Посмотреть профиль Найти все сообщения от exec
 
Регистрация: 21.01.2010
Сообщений: 1,022

Может так:

jQuery('[id="formId:tableId"].columnCheckBoxStyleClass').each(function() {this.checked = param});


или

jQuery(document.getElementById('formId:tableId')).filter('.columnCheckBoxStyleClass').each(function() {this.checked = param});
Ответить с цитированием
  #5 (permalink)  
Старый 02.09.2010, 13:18
Новичок на форуме
Отправить личное сообщение для alexey_spb Посмотреть профиль Найти все сообщения от alexey_spb
 
Регистрация: 01.09.2010
Сообщений: 3

Спасибо, exec.
Оба предложенных варианта не работают, но они меня подтолкнули к одной мысли, начал экспериментировать и в итоге нашел правильное решение.

Вот так все корректно работает:
function selectAllRows(rootElementId,param) {
 jQuery('.columnCheckBoxStyleClass', document.getElementById(rootElementId)).each(function() {this.checked = param});
}


Но насколько это "правильное" решение, я не знаю. Может быть кто-нибудь прокомментирует на предмет оптимальности того, как я предлагаю?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чекбокс (переключатель группы чекбоксов) DVNSA Общие вопросы Javascript 6 15.08.2011 14:38
Разварачивание строк в таблице на jQyery Suharik jQuery 49 07.05.2010 11:20