Speed has absolutely nothing to do with this. You are trying to speed
compare methods that do completely different things:
$('#foo'); // select the element with the id #foo
$('#foo > .bar'); // select the elements with the class bar that are
direct children of the element with the id #foo
$('#foo').find('.bar'); // select the elements with the class bar that
are direct children of the element with the id #foo
$('.foo').filter('.bar'); // select all elements with the class foo then
filter that list to only include the ones that also have the class bar
$(e.target).closest('li'); // given a node for an event, backtrack
through the document to find the closest li node (this is meant for
event delegation type tasks)
Using $(this+' > .quantite') WILL NOT WORK when /this/ is a document node. You
have to use $(this).find('> .quantite'); or $(this).children('.quantite');
should work to.
~Daniel Friesen (Dantman, Nadir-Seen-Fire)
Gilles wrote:
> Ah zut, I forgot the >, and I was hoping i could actually help on that
> one lol, but otherwise this would work normaly no?
> (sorry to ask but newbie so I check to make sure)
>
> $(this+' > .quantite') (also I think it's mention somewhere in this
> group that find is faster (for the moment only))
>
> Also would the new closest() method work?
>
> $(this).closest('.quantite'); (is that faster or slower than the above
> or / and find)
>
> On Mar 31, 5:27 pm, Daniel Friesen <[email protected]> wrote:
>
>> If /this/ is a node as I expect it is in that context, it should
>> actually be $(this).find('.quantite');
>>
>> ~Daniel Friesen (Dantman, Nadir-Seen-Fire)
>>
>> Gilles wrote:
>>
>>> Bonjour!
>>>
>>> Stupid question, but you have made sure to wrap your code inside $
>>> (function(){ /* your code */ }); yes?
>>> As otherwise JQuery might have trouble locating what you need if it
>>> isn't.
>>>
>>> Also could you provide the HTML source as rendered by the browser, it
>>> makes copy/pasting/testing easier :)
>>>
>>> $("this ~ .quantite") is wrong tho i believe it should be $(this
>>> +'.quantite') as this is a variable
>>>
>>> (unless it is interpreated as variable between double quote like in
>>> PHP, but I am pretty sure it doesn't)
>>>
>>> On Mar 31, 3:14 pm, elpatator <[email protected]> wrote:
>>>
>>>> Although Jquery offers multiple ways in selecting DOM elements, I
>>>> can't figure out how to do this, as i'm not that good at it.
>>>> Here's the deal :
>>>> my html goes like this
>>>> <logic:iterate id="ligneCommande" name="commande"
>>>> property="lignesCommande" indexId="index">
>>>> <div class="ligneArticle"><c:set
>>>> var="nbLigneCommandes"
>>>> value="${nbLigneCommandes+1}" />
>>>> <bean:define id="articleId"
>>>> name="ligneCommande"
>>>> property="article.id" />
>>>>
>>>> <div
>>>> class="blocGauche"><bean:define id="articleId"
>>>> name="ligneCommande"
>>>> property="article.id" />
>>>> <img class="visuelArticle"
>>>> src="/images/visuelsArticles/dim1/$
>>>> {ligneCommande.article.articleReference.reference}_dim1.jpg"
>>>> height="60" width="60" />
>>>>
>>>> <span class="libelleArticle">
>>>> <bean:write
>>>> name="ligneCommande"
>>>> property="article.articleReference.libelle" />
>>>> </span>
>>>> </div>
>>>> <div class="blocDroit">
>>>> <span class="prixUnitaire">
>>>> <bean:write
>>>>
>>>> name="ligneCommande" property="prixUnitaire" format=""
>>>> formatKey="main.format.prix"/>
>>>> <input
>>>> type="hidden" class="prixProduit" name="prix${index}"
>>>> value="${ligneCommande.prixUnitaire}"></input>
>>>> <input
>>>> type="hidden"
>>>>
>>>> name="montantDeLigne${index}" value="$
>>>> {ligneCommande.prixTotal}"></input>
>>>> </span>
>>>>
>>>> <table class="calculette">
>>>> <tr>
>>>> <td>
>>>> <html:text
>>>> styleClass="quantite"
>>>> property="quantiteLigneCommande(${ligneCommande.id})" styleId="$
>>>> {ligneCommande.id}"/>
>>>> </td>
>>>> <td>
>>>>
>>>> <img class="plus" src="/images/quantiteIncrement.gif"
>>>> alt="Plus" />
>>>> </td>
>>>> <td>
>>>>
>>>> <img class="moins" src="/images/quantiteDecrement.gif"
>>>> alt="Moins" />
>>>> </td>
>>>> </tr>
>>>> </table>
>>>>
>>>> <div
>>>> id="montantDeLigneAfficher${index}" class="prixTotal">
>>>> <bean:write
>>>> name="ligneCommande" property="prixTotal" format=""
>>>> formatKey="main.format.prix" />
>>>> </div>
>>>> </div>
>>>> <div class="clear"></div>
>>>> </div>
>>>> <div class="clear"></div>
>>>> </logic:iterate>
>>>>
>>>> As you can see, I iterate on each line, that's named .ligneArticle ;
>>>> What I wish to do is, on click on
>>>> <img class="plus" src="/images/quantiteIncrement.gif" alt="Plus" /> or
>>>> <img class="moins" src="/images/quantiteDecrement.gif" alt="Moins" />,
>>>> traverse back up from my button, in order to get it's current (and
>>>> unique) lingneArticle, to get back down and work on quantity input.
>>>> Right now, my js looks likes this :
>>>> $(".plus").click(function (){
>>>> var quantite = $("this ~ .quantite").val();
>>>> quantite++;
>>>> if (quantite<=0){
>>>> quantite=0;
>>>> }
>>>> $("this ~ .quantite")
>>>> .text(quantite)
>>>> .val(quantite);
>>>> calculMontantPanier();
>>>> });
>>>>
>>>> $(".moins").click(function (){
>>>> var quantite =
>>>> $(this).find(".quantite:input").val();
>>>> quantite--;
>>>> if (quantite<=0){
>>>> quantite=0;
>>>> }
>>>> $(this).find(".quantite:input")
>>>> .text(quantite)
>>>> .val(quantite);
>>>> calculMontantPanier();
>>>> });
>>>>
>>>> As you can see, my probleme is related to DOM crawling back up from $
>>>> (this) (my button), and then down to it's direct
>>>> neigbour .quantite:input .
>>>>
>>>> Thanks for your help.
>>>>
> >
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"jQuery Development" 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/jquery-dev?hl=en
-~----------~----~----~----~------~----~------~--~---