нажмите на тело, за исключением того, что какой-то другой тег не работает

кто-нибудь знает, если css position:relative; может испортить функцию

    $('body').not($('.theDIV')).click(function(){
    alert('');

    });

или проблема в другом?

что происходит, так это то, что у меня есть элемент, который появляется при нажатии кнопки, и я хочу, чтобы он скрывался(), когда я нажимаю в любом месте тела, кроме самого div. HTML

<ul class='messages'> //these are made dynamically. should i use each() to go through all the elements?
<li>
    <div class='theDIV'></div>
    <input type='button'>
</li>
<li>
    <div class='theDIV'></div>
    <input type='button'>
</li>
<li>
    <div class='theDIV'></div>
    <input type='button'>
</li>
</ul>

Извините, если я не ясно в первый раз


person Semur Nabiev    schedule 14.03.2012    source источник
comment
почему вы делаете это в каждом?   -  person Daniel A. White    schedule 15.03.2012
comment
какой у тебя html код? даже если у вас есть 2 $('.messages li ') они путают друг друга .not(). Что именно вы пытаетесь сделать?   -  person Frenchi In LA    schedule 15.03.2012
comment
код не имеет смысла, тело никогда не может быть потомком какого-либо LI, поэтому not бесполезно, и вы добавляете новый обработчик кликов в тело для каждого из элементов   -  person charlietfl    schedule 15.03.2012
comment
я изменил код, теперь я надеюсь, что его легче понять   -  person Semur Nabiev    schedule 15.03.2012
comment
Это может помочь: stackoverflow.com/questions/6610022/   -  person Sudhir Bastakoti    schedule 15.03.2012


Ответы (1)


Вы могли бы сделать

$('body').click(function(e){
   if(! $(e.target).hasClass('theDIV')){
     alert('clicked on something that has not the class theDIV');
   }

});
person Nicola Peluchetti    schedule 15.03.2012
comment
Спасибо за эти решения. ЭКОНОМИТ ВРЕМЯ! - person Simon; 08.05.2014