This is, of course, true and fine. Exactly the purpose of the context.
To define the starting node BELLOW which it will look further. Fine.
It is only that this is not what current documentation is saying :

http://docs.jquery.com/Core/jQuery#expressioncontext

At least NOT clearly and NOT unambigously...

On top of that jQuery.selector and jQuery.context in this case are not
what was originaly passed but what was processed inside jQ

So:

$("[name]","#people") which is equivalent to $("#people                [name]").

Results in :

selector := "'#people [name]"  // space in the middle
context  := DOMDocument

After call to $() finsihes, and plugins can start  using this properties.
Above is wrong and should be :

selector := "[name]"
context  := "#people " // space on the end

This might seem as some nitpicking, but it is actually extrmely important.
Because if context is always given , jQuery enabled pages will be faster.
In some case much faster. So the context syntax should be crystal
clear and consistent.

In my mind context (as I said but I will repeat ;) should be only dom
node, or single id string. If given by user. So these will be only
three valid forms:

$("'#people")  // dom document default context
$("[name], "#people")  //single id
$("[name]", domNode ) // element given as context

I see no reason for anything else to act as context.
This would be (as I also already said ;) excellent start for people to
understand how to structure their pages and why. And why are properly
strucutred pages faster to traverse with jQuery( selector, context )
calls.





2009/3/25 Julian Aubourg <aubourg.jul...@gmail.com>:
> $("[name]","#people") is equivalent to $("#people                [name]").
> Please note the spacing.
> It then means every element with a name attribute BELOW the element of id
> "people".
> $("#people[name]") means the element of id "people" with a name attribute.
> So, YES, this is quite different.
> 2009/3/25 DBJ <dbj...@gmail.com>
>>
>> @Daniel
>>
>> You confuse me ;o)
>>
>> Aa I said : A quick sample I have made (quickly) is here:
>> http://jsbin.com/avowu/edit
>>
>> Please use it now. It is extremely simple and it shows what is going
>> on inside jQuery, regarding : this.selector and this.context.
>>
>> So when I say: $("[name]", "#people"); I can (and you) can see that
>> inside jQuery selector (aka this.selector) is : "'#people[name]"
>>
>> So I am not "thinking" on this one I am just passing it on. This is
>> also very confusing:
>>
>> > Thinking that $("[name]", "#people"); is the same as $("#people[name]");
>> > is wrong on multiple levels.
>>
>> This is how I understood jQuery documentation describes the context,
>> but this is not
>> apparently how this.selector value is defined inside ... This might be
>> "wrong on multiple levels" bi this is the value of this.selector , as
>> we can clearly see.
>>
>> Also you say :
>>
>> > $("[name]", $("#people")); actually means  $("#people [name]");
>>
>> Are you actually saying this is the proper usage? Ok, but why is than
>> the "improper" usage allowed? If it is imporper that is.  But the
>> question (for the last snippet) is what is then the value of the
>> this.slector going to be, when  used by a plugin ? Currently it is :
>> "#people [name]"
>>
>> Also, why are we in this mess ? Can we have consistent documentation
>> and implementation that is folllowing it?  Something like :
>>
>> "Context type can be a dom node or an jQuery instance. Everything else
>> throws an exeception if passed as a context to the jQuery() function"
>>
>> This would be a really good start to the discussion on what is
>> actually a "context" ;o)
>>
>> Regards.
>>
>>
>> 2009/3/25 Daniel Friesen <nadir.seen.f...@gmail.com>:
>> >
>> > Context is either a dom node, a document, or recently a jQuery object
>> > with the like. Context is merely used for establishing a dom node as a
>> > parent, and in the case of a document is necessary to know what document
>> > to use to create new nodes for.
>> > Thinking that $("[name]", "#people"); is the same as $("#people[name]");
>> > is wrong on multiple levels. $("[name]", $("#people")); actually means
>> > $("#people [name]"); and the contex is not meant to be used that way.
>> > In fact trying to think that way makes things confusing and reduces code
>> > readability because you are mixing up order. If you want to build
>> > queries like this then I'd recommend you push for the inclusion of my
>> > alternate proposed format:
>> > $("#selector", "[selector]", ".selector", ...);
>> > Which makes proper sense since you are building up selectors in order
>> > (even has potential performance benefits if someone is adventurous since
>> > I'd explicitly say to not rely on any consistent return for .end() when
>> > using it). It's even more useful when you throw widget objects into the
>> > mix.
>> >
>> > ~Daniel Friesen (Dantman, Nadir-Seen-Fire)
>> >
>> > DBJDBJ wrote:
>> >> My question/comment : What is a CONTEXT LOGIC in jQ ? I think it
>> >> should be : dom node inside which is the result set to be found?
>> >> The dom node inside which is jQuery to use the selector given. Default
>> >> is document.
>> >>
>> >> If I read it right , jQ doc says that context type can be (only?) dom
>> >> node or jQuery instance. So I expected that if I give context as a
>> >> string it will be takens as selector for the jQuery, which will
>> >> eventualy spill out a single dome node to be used as a context. And
>> >> that
>> >> way one can speed up her code, because querying inside the known dom
>> >> element must be quicker than querying inside the whole document, each
>> >> time. finding on the branch is faster that finding from the root of
>> >> the tree.
>> >>
>> >> But it seems that if string is given as a context , the selector get's
>> >> it as a prefix and context is a dom document ? So :
>> >>
>> >> $("[name]", "#people")    is the same as saying    $("#people[name]",
>> >> document ) , because jQ makes it into this.
>> >>
>> >> While one might expect the above to be translated to :  $("[name]",
>> >> document.getElementById("people") ) , which could considerably speed
>> >> up the slection ...
>> >>
>> >> A quick sample I have made (quickly) is here:
>> >> http://jsbin.com/avowu/edit
>> >>
>> >> // context is correctly reported by jQ
>> >> $("[name]", document.getElementById("people")).formula( log ) ;
>> >>
>> >> // this.context is reported by jQ as HTMLDocument ?
>> >> // this.selector is prefixed with context
>> >> $("[name]", "#people") ;
>> >>
>> >> Is this "by design" ?  Maybe jQ does this :
>> >>
>> >> 1 :: jQuery("#people").find("[name]")
>> >> 2 :: this.context = "#people" + "[name]"
>> >>
>> >> So that plugins can see the context which actually was used ? So the
>> >> line :
>> >> $("[name]", "#people")
>> >> after all IS actually making things faster ? And I am (or I was)
>> >> confused with the value of this.context and this.selector, available
>> >> to me inside a plugin ? But then I think I can;t be right here,
>> >> because it would be much better to have the selector and context, as
>> >> originaly
>> >> given by the user :
>> >>
>> >> 1 :: this.context = "#people" ; this.selector = "[name]" ;
>> >> 2 :: jQuery(context).find(selector)
>> >>
>> >> After this plugins will see the original selector and context.
>> >> Provided my assumptions are correct.
>> >>
>> >>
>> >>
>> >>
>> >>
>> >>
>> >> >
>> >>
>> >
>> > >
>> >
>>
>>
>>
>> --
>> Dusan Jovanovic
>> http://dbj.org
>> -------------------------
>> "html e-mail is expensive" ™
>>
>> This email originates from Dusan B. Jovanovic. It, and any
>> attachments, may contain confidential information and may be subject
>> to copyright or other intellectual property rights. It is only for the
>> use of the addressee(s). You may not copy, forward, disclose, save or
>> otherwise use it in any way if you are not the addressee(s) or
>> responsible for delivery. If you receive this email by mistake, please
>> advise the sender and cancel it immediately. Dusan B. Jovanovic may
>> monitor the content of emails within its network to ensure compliance
>> with its policies and procedures. Any email is susceptible to
>> alteration and its integrity cannot be assured. Dusan B. Jovanovic
>> shall not be liable if the message is altered, modified, falsified, or
>> edited.
>>
>>
>
>
> >
>



-- 
Dusan Jovanovic
http://dbj.org
-------------------------
"html e-mail is expensive" ™

This email originates from Dusan B. Jovanovic. It, and any
attachments, may contain confidential information and may be subject
to copyright or other intellectual property rights. It is only for the
use of the addressee(s). You may not copy, forward, disclose, save or
otherwise use it in any way if you are not the addressee(s) or
responsible for delivery. If you receive this email by mistake, please
advise the sender and cancel it immediately. Dusan B. Jovanovic may
monitor the content of emails within its network to ensure compliance
with its policies and procedures. Any email is susceptible to
alteration and its integrity cannot be assured. Dusan B. Jovanovic
shall not be liable if the message is altered, modified, falsified, or
edited.

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"jQuery Development" group.
To post to this group, send email to jquery-dev@googlegroups.com
To unsubscribe from this group, send email to 
jquery-dev+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/jquery-dev?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to