Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Выбрать все элементы кроме $(this) (https://javascript.ru/forum/jquery/8181-vybrat-vse-ehlementy-krome-%24.html)

shustrikk 13.03.2010 02:41

Выбрать все элементы кроме $(this)
 
Ситуация вкратце: есть несколько изображений в качестве ссылок меню, которые при загрузки становятся чб. Для них определены события js: onmouseout и onmouseover, которые переводят из чб в нормальное и обратно.

js:
function desaturate(img) {
                var img2 = Pixastic.process(img, "desaturate");
                img2.onmouseover = function() {
                        Pixastic.revert(this);
                }

        }
        window.onload = function (){
            var img = document.getElementsByTagName('.MyClass img');
            for ( i in img ){
                desaturate(img[i]);
            }
        }


Задача: нужно выделить одну активную ссылку (страница не перезагружается), т.е. сделать картинку цветную, а все остальные опять чб. Создал событие по клику, попытался манипулировать атрибутами <img>, получается только выделить, а вот перевести ее обратно при клике на другую картинку — нет. Пробовал реализовать это через jQuery так:

$(".MyClass a img").click(function () {
$(".MyClass a img").attr({onmouseout: "desaturate(this);"});
$(this).removeattr("onmouseout");	   
});


Добавляем событие onmouseout для всех картинок (переводит в чб по событию).
Удаляем событие onmouseout для текущей картинки (не переводит в чб)

Вообще, очень интересно, возможна ли такое обращение к элементам и в такой последовательности? Возможно ли каким-либо способом выделить все элементы, кроме кликнутого и присвоить им что угодно (стиль и т.д.)?

B@rmaley.e><e 13.03.2010 09:07

Если нужные элементы имеют одного и того же родителя, то можно использовать nextAll и prevAll относительно опорного (this).

subzey 13.03.2010 14:17

$("…").not(this)


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