Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Подскажите, плз, по выборке (https://javascript.ru/forum/jquery/5550-podskazhite-plz-po-vyborke.html)

mcpro 23.10.2009 13:45

не в номинации "это удобно, а никто не знает" я оваций точно не получу.
Ну тогда так (постараюсь не напутать ни чего)
Есть табличка, к ней подключен джикверевский модуль сортировки.
$("#myTable").tablesorter({
	    headers: { 
            3: { 
                sorter: false 
            }, 
            4: { 
                sorter: false 
            },
            6: { 
                sorter: false 
            }			
		}	
	});

все столбцы имеют стиль "header" по умолчанию. Когда же выбран какой либо столбец то к его стилю прибавляется "up" или "down". Я задумал сделать еще подмену фона при наведении мышки.
$('.mainTable th.header').hover(	
	  function () {
		$(this).css('background-color', '#8dbdd8');
	  },
	  function () {
		$(this).css('background-color', '#e6eeee');
	  }
	);

Все просто. Но есть одно НО. Когда столбец выбран для сортировки, то есть его класс "header up" или "header down" надо чтобы фон при наведении мыши на него НЕ менялся. То есть надо, чтобы вместо $('.mainTable th.header') выбирались только те элементы, у кот класс ТОЛЬКО header.
Вот )
$('a[class=header]') как то странно работает.
По умолчанию сортировка сделана по дате и при на ведении на ней мышки фон не меняется. Вроде все ок. Но если кликнуть на один из столбцов, то на новом столбце для сортировки по прежнему остается подмена фона.

x-yuri 23.10.2009 15:05

live?

e1f 23.10.2009 15:31

Цитата:

То есть надо, чтобы вместо $('.mainTable th.header') выбирались только те элементы, у кот класс ТОЛЬКО header.
Ну Вы же знаете, какие классы могут быть на хидере?
$('.mainTable th.header:not(.up, .down)')

mcpro 23.10.2009 16:34

изменил код на
$('.mainTable th.header:not(.headerSortDown, .headerSortUp)').hover(    
      function () {
        $(this).css('background-color', '#8dbdd8');
      },
      function () {
        $(this).css('background-color', '#e6eeee');
      }
    );

но работает криво.
То есть при загрузки обработчик события только на элементы с классом header вешается. После того как одному из элементов добавляется класс headerSortDown, обработчик с него не убирается.

e1f 23.10.2009 18:51

Логично, не находите? ;)
Обработчик вешается не на некую абстрактную "динамическую коллекцию", а на вполне конкретный набор элементов.
Либо копайте в сторону live, либо как-то так:
$('.mainTable th.header').hover(    
    function () {
        $(this).not('.headerSortDown, .headerSortUp').css('background-color', '#8dbdd8');
    },
    function () {
        $(this).not('.headerSortDown, .headerSortUp').css('background-color', '#e6eeee');
    }
);

mcpro 23.10.2009 20:06

О ))) Спасибо. Получилось. Попробую теперь с Live разобраться.


Часовой пояс GMT +3, время: 18:14.