2013-11-26 6 views
0

Мне нужно связать мыши, мыши и щелчки событий для всех элементов, кроме определенных дочерних элементов Div и его дочерних элементов.Событие JQuery + Bind для всех элементов, кроме определенного div и всех его элементов.

<html> 
    <head></head> 
    <body> 
     <div> 
     <!-- page content goes here --> 
     </div> 
     <div class="popup">Popup content goes here</div> 
    </body> 
</html> 

Я могу связать события для всех элементов, как показано ниже.

$(document).ready(function() { 
    $(this).find("body *").mouseover(function(e){ 
     // do something 
    }).mouseout(function(e){ 
     // do something 
    }).click(function(e){ 
     // do something 
    }); 
}); 

Я попытался несколькими способами игнорировать содержимое div .popup. Но это не удалось.

Оцените свое решение. Спасибо!

+0

что вы хотите сделать ... вы хотите привязать событие ко всем элементам? то как вы обрабатываете распространение и т. д. –

+0

Привет @ArunPJohny, да, мне нужно связать событие для всех элементов, ожидающих указанный элемент и всех его детей. Здесь мне нужно остановить текущее распространение, так что я использую 'e.stopPropagation();'. Благодаря! – asankasri

+0

Привет всем, мне удалось решить это, как показано ниже. '$ (this) .find (" body * "). filter (function() {return! ($ (this) .parents(). index ($ ('. popup'))! = -1 || $ (это) .hasClass ('popup'));}) .mouseover (function (e) {}) ' – asankasri

ответ

1
$(this).find("body *").not(".popup").mouseover(function(e){ 
     // do something 
    }).mouseout(function(e){ 
     // do something 
    }).click(function(e){ 
     // do something 
    }); 

но вы должны попробовать ниже код в документе Reday$(this) не работы

$(document).ready(function() { 
    $("body *").not(".popup").mouseover(function(e){ 
      // do something 
     }).mouseout(function(e){ 
      // do something 
     }).click(function(e){ 
      // do something 
     }); 
}); 

ссылка .not()

+0

Hi Rituraj,' $ ("body *"). not (". popup") 'работает только для элементов который получил «всплывающие» calss. но в моем случае мне нужно, чтобы он работал и для его детей. – asankasri

+0

@ rituraj-ratan Можно ли сделать то же самое, используя javascript или угловой? Что эквивалентно этому? – Sathiyamoorthy

+0

для этого в комментарии см. Http://tech-blog.maddyzone.com/javascript/this-in-angularjs –

0

попробовать:

$(document).ready(function() { 
    $(this).find("body *").not(':has(> .yourclassyoudontwant)').mouseover(function(e){ 
     // do something 
    }).mouseout(function(e){ 
     // do something 
    }).click(function(e){ 
     // do something 
    }); 
}); 
+0

Привет @ user3035456, '$ (" body * "). Not (': has (> .popup)') 'все равно не работает. но '$ (" body * "). not ('. popup')' работает только для элементов, у которых есть класс popup. но в моем случае мне нужно, чтобы он работал и для его детей. – asankasri

+0

как насчет: $ ("body *"). Not ('popup *') или $ ("body *"). Not ('. Popup'). Children() –

Смежные вопросы