2010-10-01 5 views
0

Je ne sais pas s'il s'agit de Raphael, ColorBox ou jQuery. Voici mon code pertinent:Cliquez sur l'événement tiré deux fois

var image = paper.image(p.url_, tx, ty, img.width, img.height); 
image[0].style.cursor = "pointer"; 
image.node.onclick = function() { 
    $.colorbox({ 
     title: "Some Random Title", 
     href: function() { 
      $.post("test.php", { arg: p.id_ }); 
     } 
    }); 
};  

Lorsque vous regardez le clic dans la console FireBug, le message est renvoyé deux fois. Il est également viré deux fois si c'est un get aussi.

Si je passe de la fonction href à un appel direct de test.php, il n'y a qu'un seul appel émis.

Pourquoi l'événement click émet-il deux fois l'appel lors de l'utilisation de jQuery?

MISE À JOUR: L'ajout d'un appel à l'alerte dans la fonction anonyme se déclenche également deux fois donc je suppose que c'est quelque chose à voir avec colorbox.

MISE À JOUR 2: J'ai essayé de le câbler sur une page réelle et FireBug envoie ce message d'erreur en plus des deux messages get/post. Ce qui confirme que c'est un problème dans ColorBox. En outre, il fait des progrès difficiles, car tandis que les deux appels complètent les sièges de colorbox montrant qu'il est palpitant.

c is undefined 
    (function(b,gb){var v="none",t="click"...c.settings=eb;b(c.init)})(jQuery,this) 

Remarque: Ceci uniquement joint au second appel et non le premier.

+0

avez-vous essayé "image' [0] '.node.onclick = function() {};" ?? –

+0

Je ne l'avais pas fait mais je viens de le faire et FireBug rapporte 'image [0] .node est undefined' –

Répondre

1

Pas très familier avec la boîte à couleurs, donc je sors un peu ici. Je suppose que vous voulez que html de colorbox utilise le résultat de la publication. Je mettrais le poste à l'extérieur de la boîte de couleur. Y at-il une raison pour laquelle vous n'utilisez pas $(image.node).click()? Ou même $(image).click()? Voici comment je le ferais

var image = paper.image(p.url_, tx, ty, img.width, img.height); 
image[0].style.cursor = "pointer"; 
$(image.node).click(function() { 
    var post_html = $.post("test.php", { arg: p.id_ }); 
    $.colorbox({ 
     title: "Some Random Title", 
     html: post_html 
    }); 
}); 

Cela peut ne pas réparer, mais il vous dira si le problème est que colorbox déclenche le href deux fois ou si le clic est en cours d'exécution deux fois.

+0

La raison pour utiliser' image.node.click' est parce qu'il est fourni par Raphael dans le but de rendre l'élément cliquable et semblait la voie logique à suivre. Je vais essayer votre chemin et faire un rapport. –

+0

En fait, vous étiez presque là. J'ai corrigé votre exemple et vous ai donné la tique. Cependant, avec cette méthode il y a un décalage notable entre le clic et l'apparence de la boîte à lumière et aussi parce que le chargement se fait en dehors de la boîte, vous n'obtenez plus le batteur. –

Questions connexes