[jQuery] Re: filtering complex selectors

2008-10-23 Thread Dan Finch

Yeah holy cow, I meant  , not . It's a strange edge case, I'm
sure even wanting to do such a thing most of the time might indicate
poor design. I'm injecting UI into arbitrary pages and want to style
it without damaging the host page. Because of the way my style
extension works, dynamic rules are applied in the context of each
newly created element, essentially calling .is() on the element
and .find() if .is() doesn't match, applying rules. Setting up my
rules in the form #div-which-contains-all-my-stuff h1 is what
tripped me up; until the possible 1.3 .is() upgrade, classes will have
to do. Thanks!

On Oct 22, 6:28 pm, ricardobeat [EMAIL PROTECTED] wrote:
 Following your logic, an L4 element will never be a direct child of an
 L1, so that would always return 0. Also you don't need two objects to
 do what you were trying at first, you can do $('some  thing',
 '#inhere')

 Let me see if I understand you. Given the following mark-up:

 body

 div class=L1
   p
       span class=L3
            a class=L4 /
       /span
   /p
 /div

 div class=L1 thisOne
   p
       span class=L3 other
            a class=L4 /
       /span
   /p
 /div

 /body

 You want to find only the a (4) elements that are children of div
 (1) AND children of span(3). Right. L4 is not a direct children of
 L1 so you need another approach.

 $('span.other a').filter(function(){ return !!$
 (this).parents('div').length })
 which equates to
 $('L3.other L4').filter(function(){ return !!$
 (this).parents('L1').length })

 or, if what you want is the opposite, to find a's in span that are
 also a child of div

 $('span a').filter(function(){ return !!$
 (this).parents('div.thisOne').length })
 which equates to
 $('L3  L4').filter(function(){ return !!$
 (this).parents('L1').length }) // returns true if the element is a
 child of L1

 There are many ways of simplifying that based on your element classes
 or attributes, but that's all I could come up with without seeing your
 HTML.

 cheers,
 - ricardo

 On Oct 22, 6:16 pm, Dan Finch [EMAIL PROTECTED] wrote:



  You're right, I do that all the time :). I'm getting my side effects
  mixed up. What I can't actually do is match against ancestors of the
  context. For example, $( .L1.L4, $( .L3 ) ), where the n
  represents the level of DOM depth.

  On Oct 22, 2:38 pm, MorningZ [EMAIL PROTECTED] wrote:

   Have you tried those?

   There's no reason why

   $( pa, $( div ) );

   wouldn't find all a that are direct descendants of p tags inside
   div tags

   On Oct 22, 2:43 pm, Dan Finch [EMAIL PROTECTED] wrote:

If there's a way, what would it take to be able to use complex
selectors (those with  , ~, , etc.) with filtering functions.
For example,

$( div ).find( pa );
$( pa, $( div ) );

Thanks- Hide quoted text -

   - Show quoted text -- Hide quoted text -

 - Show quoted text -


[jQuery] filtering complex selectors

2008-10-22 Thread Dan Finch

If there's a way, what would it take to be able to use complex
selectors (those with  , ~, , etc.) with filtering functions.
For example,

$( div ).find( pa );
$( pa, $( div ) );

Thanks


[jQuery] Re: filtering complex selectors

2008-10-22 Thread Dan Finch

You're right, I do that all the time :). I'm getting my side effects
mixed up. What I can't actually do is match against ancestors of the
context. For example, $( .L1.L4, $( .L3 ) ), where the n
represents the level of DOM depth.

On Oct 22, 2:38 pm, MorningZ [EMAIL PROTECTED] wrote:
 Have you tried those?

 There's no reason why

 $( pa, $( div ) );

 wouldn't find all a that are direct descendants of p tags inside
 div tags

 On Oct 22, 2:43 pm, Dan Finch [EMAIL PROTECTED] wrote:



  If there's a way, what would it take to be able to use complex
  selectors (those with  , ~, , etc.) with filtering functions.
  For example,

  $( div ).find( pa );
  $( pa, $( div ) );

  Thanks- Hide quoted text -

 - Show quoted text -