This is the expected behavior. The selector '.myClass a' describes an A tag
being a descendant of a tag with the class myClass. is() doesn't work on a
relationship as the result is ambiguous. To check if this element is an A
tag that is a descendant of of a tag with class myClass, maybe try:

if($(this).filter('a').parents('.myClass').length > 0) {...}

Or, in your case:

if($(target).is('a')) {
  if($(target).parents('.myClass').length > 0) {
  }
  if($(target).parents('.myOtherClass').length > 0) {
  }
}

Or, if you just want to check if this is a child of an element with a
particular class, you could do:

var $parent = $(target).parent();
if($parent.is('.myClass')) {...}
if($parent.is('.myOtherClass')) {...}

--Erik


On 9/26/07, duff <[EMAIL PROTECTED]> wrote:
>
>
> Hi all,
>
> I have started to use Jquery a couple month ago, and i really love the
> framework.
>
> I am currently working on an event delegation plugin, attaching
> generic event to the document and applying filters to the target
> element to determine if an event should be applied.
>
> I have however noticed some weird behavior for the .is() and .filter()
> function :
>
> I am using the latest jquery version 1.2.1 and am having some troubles
> with the filter function.
>
> If you use filter with an expression containing a space ( '.myClass a'
> for example), nothing is filtered at all.
>
> $('*').filter('.myClass a' );  returns all the nodes on the page.
>
>
> Is it the expected behaviour ? Is there other ways to efficiently
> check if a given node matches a given rule ?
>
> document.addEventListener('click',
>                                         function(target){
>                                                 if $(target).is('.myClass
> a'){
>                                                       //do sth
>                                                 }
>                                                 if
> $(target).is('.myOtherClass a'){
>                                                       //do sth else
>                                                 }
>                                          }
>                                         );
>
> Thanks
>
>

Reply via email to