Opened 11 years ago
Last modified 11 years ago
#9391 closed feature
:depth() Selector — at Version 6
Reported by: | Owned by: | ||
---|---|---|---|
Priority: | low | Milestone: | 1.7 |
Component: | selector | Version: | 1.6.1 |
Keywords: | 1.7-discuss | Cc: | |
Blocked by: | Blocking: |
Description (last modified by )
I'd like to see what I'd call a 'depth' selector or filter. This would let me find an element(s), matching a selector, that was specifically the nth nested level of that element down from the current location (in fact, it would be very handy to be able to traverse both up and down the DOM).
This would be useful when working with sites that output code that contains a great deal of nesting of divs, ULs or tables. As an example, here's something of the flavour of what I'm after:
$('table.someClass > td:depth(3)')
which would be easier than...
$('table.someClass > tbody > tr > td > table > tbody > tr > td > div > table > tbody > tr > td)')
If you wanted to select all TDs that were 3 levels down and any other descendant TDs, you would simply write:
$('table#someClass > td:depth(2) td')
I suppose the downside is that people might use it out of laziness when it may be far more optimal to write code that was just a little longer.
Thanks for reading.
Rob
Change History (6)
comment:1 Changed 11 years ago by
Keywords: | 1.7-discuss added |
---|
comment:2 follow-up: 3 Changed 11 years ago by
Description: | modified (diff) |
---|
-1, This needs education, not new features.
comment:3 Changed 11 years ago by
Replying to rwaldron:
-1, This needs education, not new features.
Although my second example is silly – $('table#someClass > td:depth(2) td') – the first is not, as there's no simple means of stopping all descendant matching elements from being returned AFAIK. Another solution, then, could be:
$('td td td:stop')
Where :stop prevents the DOM being traversed to a greater depth than the initial level of matched elements.
comment:6 Changed 11 years ago by
Component: | unfiled → selector |
---|---|
Description: | modified (diff) |
Priority: | undecided → low |
@rob, yes I understood that, but the proposal indicates a misunderstanding of how selectors work. The proposal seems to assume that selectors are evaluated from right-to-left, when they're actually evaluated left to right - which makes a huge difference in how your proposal is interpreted.
Nominating ticket for 1.7 discussion.