2013-05-13 4 views
0

Я пытаюсь изменить css пунктов меню, щелкнув в любом месте на экране. Это необходимо, чтобы сбросить их свойства css после того, как они уже нажали на них и изменили значение css по умолчанию.Как я могу изменить css этого, когда я нажимаю на что-нибудь, кроме этого?

Если у меня есть элемент списка с id="linkitem" как я нажимаю на что-либо, кроме #linkitem, чтобы изменить его.

Благодаря

+0

Просто к сведению, вы не должны иметь один и тот же идентификатор на двух различных элементов. Недопустимый HTML. Вместо этого я предлагаю использовать класс 'linkitem'. Вы ссылаетесь на классы с '.classname' вместо' # idname'. – Jeff

ответ

1
$(document).on('click', function(e) { 
    if (! $(e.target).closest('#linkitem').length) { 
     // you clicked anywhere but on an element inside #linkitem (or itself) 
     $('#linkitem').css('color', 'red'); 
    } 
}); 
+0

Спасибо, не могли бы вы сломать вторую строчку, чтобы я мог лучше справиться с ней? – crm

+0

@crm - щелчок по документу означает, что функция щелчка срабатывает при нажатии в любом месте. e.target был бы фактическим элементом, который был нажат, и с помощью ближайшего() мы проверяем, имеет ли элемент, который был на самом деле нажат либо этот идентификатор, или имеет родительский элемент с этим идентификатором, что означает, что щелкнутый элемент находится внутри #linkitem элемент, и если элемент с щелчком находится не внутри #linkitem, а щелчок не является #linkitem, вы щелкнете где-то еще. – adeneo

1

Вам нужен отрицательный селектор

$(':not(#linkitem)').click(function(){ 
    //insert code here 
}); 
+0

вам не хватает цитаты –

+0

Секундомеры psuedo jQuery не могут использовать повышение производительности, предоставляемое 'querySelectorAll()'. – Ohgodwhy

1
$('body').on('click', function(e) { 
    if(e.target.id === 'linkitem'){ 
     // Do something 
    } 
    else { 
     // something else 
    } 
}); 
+1

Не должно быть: if (e.target.id === 'linkitem') {...}? –

+0

много лучше ..... –

1

Я не уверен, что вы имеете в виду, но вы можете просто сделать:

$(":not(#linkitem)").on('click',function(){ 
    alert("I was callled"); 
} 
Смежные вопросы