Javascript.RU

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

Не окрашиваются стоки таблицы
Фрагмент таблицы:
print "<tr class=trTheme id=$Fetch[id]>
                    <td width='16' class='theme'> <input type='checkbox' class='cbTheme' id=$Fetch[id] name='cbTheme$Fetch[id]' value=$Fetch[id]/></td>";


Событие клика на чекбокс и вызов функции окраски строки таблицы:
function select_color_tr(id)    {
    /*Выделяем цветом строки отмеченные галочкой*/
        if ($('.cbTheme#'+id).attr('checked'))    {
            $('.trTheme#'+id).addClass('temp');
        } 
        else    {
            $('.trTheme#'+id).removeClass('temp');
        } 
    }
/*Кликаем по галочке темы*/
    $('.cbTheme').click(function()  {
        var id=$(this).attr('id'); 
        select_color_tr(id);
    });


При клике на чекбоксе в FireFox и IE строки не окрашиваются, а в опере окрашиваются. В чем проблема?

Последний раз редактировалось Avron2, 25.03.2011 в 16:43.
Ответить с цитированием
  #2 (permalink)  
Старый 25.03.2011, 16:44
Аспирант
Отправить личное сообщение для kostr Посмотреть профиль Найти все сообщения от kostr
 
Регистрация: 12.09.2010
Сообщений: 98

У вас какая-то сложная функция, зачем она вообще? Вот так работает везде:
$(".cbTheme:checkbox").change(function(){
  if ($(this).is(":checked"))
   $(this).closest(".trTheme").addClass('temp');
  else
   $(this).closest(".trTheme").removeClass('temp');
 });
Ответить с цитированием
  #3 (permalink)  
Старый 25.03.2011, 17:17
Аватар для Avron2
Интересующийся
Отправить личное сообщение для Avron2 Посмотреть профиль Найти все сообщения от Avron2
 
Регистрация: 25.03.2011
Сообщений: 26

Посмотрите теперь
Но ответьте, пожалуйта на вопрос, почему все-таки не работает? Ведь если мы будем сталкиваться с проблемами и придумывать другие пути их решения, то мы не решаем трудности, а ищем легкие пути или те, которые уже раньше проходили. В предыдущем скрипте было все так сложно, т.к. я подразумевал что функция select_color_tr(id) быдет вызываться и при щелчке на чекбоксе и на строке.

Переделал скрипт, теперь если кликаем по галочке, то строчка окрашивается, а если кликаем по строчке, то галочка не ставиться и строчка не окрашивается.

/*Кликаем по галочке темы*/
    $('.cbTheme').click(function()  {
        var id =$(this).attr('id'); 
        /*Выделяем цветом строки отмеченные галочкой*/
        if ($(this).attr('checked'))    {
            $('.trTheme#'+id).addClass('temp');
        } 
        else    {
            $('.trTheme#'+id).removeClass('temp');
        } 
        changeMenu();
    });

    /*если кликнули по строчке, то ставим галочку и окрашиваем*/
    $('.trTheme').click(function() {
       var id = $(this).attr('id');
       $('.cbTheme#'+id).click();
    });

Последний раз редактировалось Avron2, 25.03.2011 в 17:32.
Ответить с цитированием
  #4 (permalink)  
Старый 25.03.2011, 18:37
Аспирант
Отправить личное сообщение для kostr Посмотреть профиль Найти все сообщения от kostr
 
Регистрация: 12.09.2010
Сообщений: 98

Ну во-первых, у вас повторяется id - у чебокса и строки, а он должен быть уникальным.
А во-вторых, мне кажется, у чебокса просто нет метода click(). Или есть не во всех браузерах. С этим методом вообще много непоняток, лучше уж атрибут менять.
Ответить с цитированием
  #5 (permalink)  
Старый 25.03.2011, 18:48
Аватар для Avron2
Интересующийся
Отправить личное сообщение для Avron2 Посмотреть профиль Найти все сообщения от Avron2
 
Регистрация: 25.03.2011
Сообщений: 26

А если одинаковые id, но в разных классах? Я ведь явно пишу принадлежность id к классу cbTheme.
$('.cbTheme#'+id)
Это не правильно?

Если так нельзя, то тогда id элемента нужно передавать в каком-то придуманном атрибуте (не стандартном в html). Как в такой ситуации лучше идентифицировать конкретный элемент в группе?
Или в цикле где формируются строки таблицы подключать обработчики событий с помощью bind()?

Последний раз редактировалось Avron2, 25.03.2011 в 18:52.
Ответить с цитированием
  #6 (permalink)  
Старый 25.03.2011, 18:54
Аспирант
Отправить личное сообщение для kostr Посмотреть профиль Найти все сообщения от kostr
 
Регистрация: 12.09.2010
Сообщений: 98

Все равно в каких классах, id должен быть один. Файрфокс, во всяком случае, видит только первый, если элементов с одним id несколько.
Ответить с цитированием
  #7 (permalink)  
Старый 25.03.2011, 18:55
Аватар для Avron2
Интересующийся
Отправить личное сообщение для Avron2 Посмотреть профиль Найти все сообщения от Avron2
 
Регистрация: 25.03.2011
Сообщений: 26

Как быть в такой ситуации?
Как в такой ситуации лучше идентифицировать конкретный элемент в группе?
Или в цикле где формируются строки таблицы подключать обработчики событий с помощью bind()?
Ответить с цитированием
  #8 (permalink)  
Старый 25.03.2011, 18:56
Аспирант
Отправить личное сообщение для kostr Посмотреть профиль Найти все сообщения от kostr
 
Регистрация: 12.09.2010
Сообщений: 98

Ну можно к одному из id впереди буковку добавить. А вот bind не спасет, если метода нету.
Ответить с цитированием
  #9 (permalink)  
Старый 25.03.2011, 18:59
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Сообщение от Avron2
Как в такой ситуации лучше идентифицировать конкретный элемент в группе?
Добавить второй класс, например <tag class="valera volodia" />
А в jQuery обращаться так: $('.valera.volodia')
Ответить с цитированием
  #10 (permalink)  
Старый 25.03.2011, 19:17
Аватар для Avron2
Интересующийся
Отправить личное сообщение для Avron2 Посмотреть профиль Найти все сообщения от Avron2
 
Регистрация: 25.03.2011
Сообщений: 26

Сообщение от kostr Посмотреть сообщение
Ну можно к одному из id впереди буковку добавить. А вот bind не спасет, если метода нету.
print "<tr class=trTheme id=tr$Fetch[id]> 
                    <td width='16' class='theme'> <input type='checkbox' class='cbTheme' id=cb$Fetch[id] name='cbTheme$Fetch[id]' value=$Fetch[id]/></td>";

Добавил к id строки "tr" и к id чекбокса "cb". Тогда чтобы узнать id, нужно вырезать эти буквы из id?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подсветка столбцов таблицы ctocopok Элементы интерфейса 31 14.06.2011 01:42
Ширина таблицы Syltan (X)HTML/CSS 1 01.05.2010 22:33
смена фоновой картинки у таблицы cuberboy Общие вопросы Javascript 0 15.10.2009 23:06
Перемещение строк таблицы в Firefox barcelona jQuery 17 23.02.2009 15:41
Фиксированный заголовок таблицы ilshat Элементы интерфейса 6 20.12.2008 00:35