- From: Andrew Fedoniouk <news@terrainformatica.com>
- Date: Thu, 09 Oct 2008 10:53:06 -0700
- To: "www-style@w3.org" <www-style@w3.org>
Daniel Glazman wrote:
>
> I took a quick look at the list of selectors allowed by jQuery [1].
> Mostly based on CSS 3 Selectors, it lacks a few of them while adding
> others:
>
> additions
> ---------
> :even even elements, zero-indexed
> :odd odd elements, zero-indexed
> :gt(n) elements w/ index greater than n
> :lt(n) elements w/ index lower than n
> :header matches h1 to h6
> :animated elements that are currently animated
> :contains(text) elements that contains the given text
> :has(selector) matches elements that contain at least one
> element matching selector
> :parent matches elements that are parents
It appears as :parent is just :not(:empty) in CSS selectors.
> :hidden elements that are hidden
> :visible elements that are visible
> :input,
> :text,
> :password,
> :radio,
> :checkbox,
> :submit,
> :image,
> :reset,
> :button
> :file match elements of the given type
First of all we need to understand that jQuery uses selectors for
queries that are invoked from script, so dynamically - from time to
time.
CSS selectors in contrary define static system that applies to elements
all of the time - any change in the DOM triggers recalculation of
selectors on involved elements. I've tried to explain problem here [1].
This means that jQuery can use selectors that are more computationally
complex than the ones in CSS.
Thus you can compare CSS set of selectors and JQ set of selectors only
to some extent. They never be the same as are serving different
purposes. Ideally JQ selector set has to be a strict superset of the CSS
one.
If to speak about UI runtime state flags then here is the list of
additional pseudo-classes that we use in htmlayout and Sciter engines
to better handle Web alike UI cases:
:expanded
:collapsed - these flags are mutually exclusive and are in runtime
by script/code. When set they may trigger animation as
a delta between expanded and collapsed styles.
:busy - there is at least one pending network operation on
the element. E.g. <img> or <frame> when loading their
content have this state. Elements that issue AJAX
request will also have this flag set until the request
finishes.
:incomplete - element that uses external data has no that data
arrived yet. E.g. <img>, <frame>, <object> use external
data and can be in :incomplete state.
img:incomplete:not(:busy) - means that network
operation finished with failure - e.g. image bits
are not available.
:animating - is a "must" for animations. E.g. animation from
display:block to display:none state requires the
element to be display:block during the animation.
:focusable - element is active and will accept focus.
E.g. hyperlinks, input elements, scrollables
are focusable by default.
:synthetic - all elements that were synthesized -
have not originated from document markup.
In other words: elements that were created
by script/behaviors will get this flag set.
:tab-focus - element that is in :focus state and have got
the focus due to TAB key handling.
Input elements on Windows have different
styling when they got focus by TAB.
Compare default hyperlink styling in IE and FF
when the link gets focus by mouse or by tab.
FF shows dotted outline always and IE only if
the element have got focus by tab.
:drag-over - these state flags are used by internal drag-n-drop
:drop-target implementation. I suspect that JQ should have
:moving something about them too.
:copying
:drag-source
:ltr - is true if the element or one of its (nearest) parents
has @dir declared and that dir has value of "ltr"
:rtl - is true if the element or one of its (nearest) parents
has @dir declared and that dir has value of "rtl"
:has-child - element has single child.
:has-children - element has at least one child.
:has-text - element has text - non-whitespace sequence of
characters.
We have also experimental support of the following:
E:has-child-of-type(T) - matches element that has precisely one
immediate child of type T.
E:has-children-of-type(T) - matches element that has one or more
immediate children of type T.
My two cents as they say.
--
[1] "CSS, selectors and computational complexity":
http://www.terrainformatica.com/?p=99
--
Andrew Fedoniouk.
http://terrainformatica.com
Received on Thursday, 9 October 2008 17:53:52 UTC