That bothers me because simply querying '#story p:first-letter'
modifies the document. $$ is a mechanism for reading nodes, not
modifying them, so I think the confusion this would cause would
outweigh any syntactic elegance.
Cheers,
Andrew
On Feb 16, 5:54 pm, Ken Snyder <[EMAIL PROTECTED]> wrote:
> Andrew Dupont wrote:
> >> Do we want to address pseudo-elements that normally refer to text nodes
> >> or fragments such as :first-letter, :first-line, and ::selection?
>
> > I'd rather walk barefoot across a barbecue.
>
> Oh come now, I don't know how useful it would be :D, but it would
> certainly be smooth to be able to manipulate the DOM using something
> like this:
>
> $$('#story p:first-letter').each(function(element) {
> element.morph('dramatic-cap'); });
>
> <!--With html like this,-->
> <div id="story"><p>It was the best of times, it was the worst of
> times<p></div>
> <!--You would end up with a document equivalent to this-->
> <div id="story"><p><span class="dramatic-cap">I</span><span>t was the
> best of times, it was the worst of times</span><p></div>
>
> // :first-letter $$ selector
> Selector.criteria.firstLetter = 'n = h.firstLetter(n, r); d= false;';
> Selector.patterns.firstLetter = '/:first-letter(\b|$)/';
> Selector.handler.firstLetter = function(nodes, root) {
> // collect matching nodes
> return nodes.collect(function(node) {
> // travel down the DOM until a node containing text is found
> while( typeof node.nodeValue == 'undefined' && node = node.down() ) {}
> // get the first letter
> var first = node.nodeValue.substring(0,1);
> // if the text!='', get the rest
> if( first ) {
> var rest = node.nodeValue.substring(1);
> // wrap the first character and the rest of the text in respective
> spans
> node.update('<span>'+first+'</span><span>'+rest+'</span>');
> // return the span containing the first character
> return node.down();
> });
>
> }
>
> Regards,
> Ken
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Prototype: Core" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/prototype-core?hl=en
-~----------~----~----~----~------~----~------~--~---