Другие языки программирования и технологии

jQuery not()

$("body:not('#div_vhod')").click(function(){$('#passw_vhod').fadeOut(200); $('#subm_vhod').fadeOut(200); $('#a_vhod').fadeOut(200);}); почему при клике по блоку div с идентификатором div_vhod, все равно проходит функция? Ведь я же указал в условии, что этот div у нас исключение
этот селектор отфильтровывает элементы и добавляет им описанные действия и т. п
если надо запретить используйте disabled http://jquery-docs.ru/selectors/disabled/
ГЕ
Григорий Епифанов
95 792
Лучший ответ
Селектор :not() - это действительно фильтр. Тут использовать не выйдет. если бы, скажем мы выбирали все блоки и хотели бы исключить блок id="div_vhod", то тогда так:
$('div:not(#div_vhod)')....
- вторые кавычки внутри не нужны. А ты выбрал "все body", кроме body id="div_vhod". ))
Но есть еще такая загвоздочка. Если блок id="div_vhod" находится внутри какого либо блока1, (а если мы весь body задействуем, то он точно внутри) , то клик на этом блоке все равно будет вызывать функцию, которая прописана для блока1.

Например, мы пишем так:
$('body').click(function(){ alert('click A!'); });
$('#div_vhod').click(function(){ alert('click B!'); });
Тогда клик на id="div_vhod" сначала вызовет alert('click B!'); а потом еще и alert('click A!');

А если мы напишем так:
$('body').click(function(){ alert('click A!'); });
$('#div_vhod').click(function(){ return false; });
Тогда при клике на id="div_vhod" (и любой элемент внутри него) ничего не произойдет. alert'oв не будет.

Аналогично (только по результату) сработает такой вариант:
$('body').click(function(){ alert('click A!'); });
$('#div_vhod').bind('click', function(event){
event.stopPropagation();
});

Ну, т. е. с твоим кодом так:

$("body").click(function(){ $('#passw_vhod').fadeOut(200); $('#subm_vhod').fadeOut(200); $('#a_vhod').fadeOut(200); });
$('#div_vhod').bind('click', function(event){
event.stopPropagation();
});

:disabled - это тоже фильтр для выборки элементов с атрибутом disabled. Тут не прокатит. Этот атрибут для элементов форм хорошо использовать - полей, например.
Ваз ********
Ваз ********
60 969