You are completely missing the point, context is used to determine the 
current document. Without it is impossible to do a large number of dom 
actions in a way that will work across frames, THAT is why we have 
context. The idea you have of context becoming a string is not the point 
of context, in fact it will break a large number of working cases.
Finding the previous selector is the reason why we have .end() and store 
the previous jQuery object, there is no reason to redefine something.

jQuery(selector, context); was ever meant to be used in a method like 
jQuery("[name]", "#parent"); it doesn't make any sense from reading it 
at all. The context's soul purpose is to restrict to a node/document 
context. If you want to chain selectors and aren't pushing for the 
$(selector, nextselector, anotherselector, ...); chaining ability, then 
you should just be using jQuery("#parent").find("[name]"); or in the 
case of "#parent[name]" jQuery("#parent").filter("[name]");

~Daniel Friesen (Dantman, Nadir-Seen-Fire)

DBJ wrote:
> 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.
>>>
>>>
>>>       
>>     
>
>
>
>   

--~--~---------~--~----~------------~-------~--~----~
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