2013-05-21 1 views
0

Je suis nouveau à jquery, donc cela peut sembler simple, mais je ne peux pas voir l'astuce: p
J'utilise jquery 1.2.6 (et je peux ne le mettez pas à niveau: /) c'est pourquoi j'utilise le plugin livequery.

Le contexte est juste une mise à jour d'un panier dans un eshop.
Le problème est que je ne reçois pas la valeur que je veux pour "myid" dans update_it.php.
- L'exemple 1 (voir le code ci-dessous) fonctionne! L'appel est fait et j'ai obtenu la bonne valeur dans update_it.php pour "myid". Mais il est codé en dur, je veux qu'il soit générique (voir l'exemple 2).
- Avec l'exemple 2, il ne fonctionne pas :(L'alerte fonctionne, l'appel fonctionne, mais je ne reçois pas de valeur pour « myid »

Voici mon javascript:

$(document).ready(function() { 
    function update_it() { 
     $.ajax({ 
      type: "POST", 
      url: "./update_it.php", 
      dataType: "json", 
      data: "myid="+$(this).val(), 
      success: function(msg){ 
       $("div#cart-full").html(msg.fullcart); 
       $("div#cart").html(msg.mincart); 
      }, 
      error : function(xhr, desc, e) { 
       alert("ko - " + xhr.status); 
      } 
     }); 
    } 

    // Example 1 
    $("#mycheckbox_1").livequery("click", update_it); 

    // Example 2 
    $("input:checkbox[id^=mycheckbox_]").each(function(){ 
     $(this).livequery("click", update_it); 
    }); 

}); 

Merci pour ! toute aide

Répondre

1

l'exemple pour la deuxième sélection sur la page jquery implique une deuxième série de guillemets: jQuery ("[attribut^= 'valeur']")

essaient $ ("Entrée: case à cocher [id^= 'myCheckBox _']") chaque (function() {

EDIT:.

Dans ce cas, essayez le mot-clé "ON" dans l'exemple suivant au lieu de livejquery. http://jsfiddle.net/4LaQX/2/

$(function() { 
    $(document).ready(function(){ 
     $("[id^='hoverme_']").each(function() { 
      $(this).on("click", listen); 
     }); 
    }); 

    function listen(){ 
     alert($(this).html()); 
    } 
}); 

Et dans le cas de JQuery 1.2.6, le clic() mot-clé

http://jsfiddle.net/4LaQX/5/

$ (this) .cliquez (doSomethingFunc);


EDIT

$(document).ready(function() { 


    // Example 2 
    $("input:checkbox[id^=mycheckbox_]").click(update_it); 


}); 
function update_it() { 
      $.ajax({ 
       type: "POST", 
       url: "./update_it.php", 
       dataType: "json", 
       data: "myid="+$(this).val(), 
       success: function(msg){ 
        $("div#cart-full").html(msg.fullcart); 
        $("div#cart").html(msg.mincart); 
        $("input:checkbox[id^=mycheckbox_]").unbind("click"); 
        $("input:checkbox[id^=mycheckbox_]").bind("click"); 
       }, 
       error : function(xhr, desc, e) { 
        alert("ko - " + xhr.status); 
       } 
      }); 
     } 
+0

qui est facultative si vous ne mettez pas de guillemets à l'intérieur fonctionne bien aussi. – Jai

+0

Désolé, je ne vois pas où votre message a résolu mon problème. Les citations sont en effet facultatives. Je ne peux pas utiliser on() car il est ajouté dans jquery 1.7. Et j'utilise livequery parce que je ne peux pas utiliser juste click() car cela ne fonctionnera plus quand le html sera remplacé. – Pontek

+0

@Pontek .Click() est disponible à partir de JQuery 1.0. Appelez .Bind() et .Unbind() dans la fonction après l'appel ajax pour relier le .Click() aux nouveaux objets dans le code HTML. –