By the way, you could use event delegation to simplify things a lot:

$(document).ready(function(){
   $('body').mouseover(function(e){
        var elm = e.target || e.srcElement;
        if ( !$(elm).parents('.ui-dialog').length ) { //if .ui-dialog
is not an ancestor
           $(elm).doStuff();
        }
   });
});

It might be slower than binding the function straight to each element,
but it will pay off on very large DOMs.

- ricardo

On Nov 21, 8:07 am, "[EMAIL PROTECTED]"
<[EMAIL PROTECTED]> wrote:
> My mistake, it is working. The problem was my lack of understanding
> about how Dialog works.  main is the div from which I create a Dialog
> and I didn't want the event listener to be added to the elements of
> main. However main is NOT the first element of the Dialog. I the
> background it is wrapped around other elements and the top one has
> class .ui-dialog  . All sorted. Thanks .
>
> On 21 nov, 09:32, "[EMAIL PROTECTED]"
>
> <[EMAIL PROTECTED]> wrote:
> > It still doesn't work. I think part of the problem is because the
> > children of main are added after I create the event listener.
>
> > Second solution is to check in the event listener if the target is a
> > child of main and if so, return.  I know how to get the children of
> > main , but how to I check the current tartget is one of them ?
>
> > ricardobeat> I need to select all objects of the page because I want
> > to do a DOM inspector. But yes you are right, maybe I should only
> > start from body !
>
> > Thanks
>
> > On 20 nov, 18:25, ricardobeat <[EMAIL PROTECTED]> wrote:
>
> > > Are you sure you want to apply it to *all* elements on the page? That
> > > sounds a bit awkward.
>
> > > var main =  $('#main, #main *');
> > > $('body *').not(main).mouseover(function(){...});
>
> > > On Nov 20, 2:07 pm, "[EMAIL PROTECTED]"
>
> > > <[EMAIL PROTECTED]> wrote:
> > > > Hi,
>
> > > > I want to apply a mouseover event on all elements but one and its
> > > > children. I can't use class name to filter. How can I do it ?  I've
> > > > tried unsuccessfully :
>
> > > > $("*:not(#main)").not($("#main").children()).mouseover(function() {
>
> > > > });
>
> > > > thanks

Reply via email to