2010-07-14 10 views
0

ok j'ai fouiné mon cerveau et d'autres pour comprendre pourquoi cela se passe dans IE et la dernière version de FF. Cela fonctionne en chrome. Je suis un développeur débutant et j'ai récemment commencé à utiliser jquery. donc je ne sais même pas si je vais à ce sujet correctement.jQuery double feu de l'événement après la poste/get

sa forme de base pour la plupart. jquery ajax post() puis get() pour mettre à jour la page. une fois que la page est chargée depuis get, les en-têtes pliants nav/sidebar à droite doublent et les liens d'action dans le volet d'action. J'ai essayé de lier l'événement click avec bind(), live() et delegate(). il a fonctionné à l'origine avec bind mais j'ai dû relier tous mes événements de clic après l'appel d'ajax et j'essaye de trouver un moyen de contourner cela.

j'ai mis en place une version statique de l'application que je vais construire ici:

http://ishiftdelete.com/pw_mkvi/ajax_wtf.htm

à tester: cliquez sur le lien Modifier la page dans la page des actions dans le nav à droite/barre latérale. cela ouvrira une boîte de dialogue de modèle avec un bouton formulaire et soumettre.

Répondre

1

Ok, donc un de mes amis a compris cela. Apparemment, les scripts étaient chargés deux fois.

BAD:

$.get(gurl, function (data) { 
    var $response = $('<div />').html(data); 
$('#mydiv').html($response.find('#mydiv').html()); //form 
}); 

BON:

$.get(gurl, function (data) { 
    var $response = $(data); 
$('#mydiv').html($response.find('#mydiv').html()); //form 
}); 
0

ce que je sais que vous avez déjà résolu, mais pour les futurs trouveurs, vous pouvez ajouter une enveloppe autour de votre <div> comme ceci:

<div id="myDivParent"> 
    <div id="myDiv"></div> 
</div> 

Ensuite, vous pouvez simplifier votre situation avec .load() et l'élément que vous regardez ng pour, comme ceci:

$("#myDivParent").load(gurl + " #myDiv"); 

C'est, si vous passez l'argument comme url selector il va se que cet élément de la réponse :)