2010-11-10 7 views
0

J'essaie d'améliorer progressivement un élément div contenant un tag, de sorte que le contenu de la div est mis à jour et l'événement click de la div ouvre le href de la (avant modification Javascript), a.JQuery Value vs Référence

J'ai le code suivant:

$("div") 
    .click(function(){ 
     window.open($("div a").attr("href")); 
    }) 
    .html(">"); 

<div>Some text and <a href="link.html">a link</a></div> 

Le problème est, lorsque l'événement se produit un clic, le contenu du <div> a déjà été mis à jour et ainsi l'attribut href n'est plus valide.

Toute aide sur la façon dont j'écrirais ceci afin que l'URL se souvienne serait grandement appréciée.

Répondre

3

Quelque chose le long de ces lignes devrait faire l'affaire:

$("div").each(function() { 
    var url = $('a', this).attr('href'); 
    $(this).click(function() { window.open(url); }).html("&gt;"); 
}); 

S'il n'y a qu'un seul div, vous pouvez sauter l'.each et enregistrez simplement la valeur href dans une variable avant de remplacer le contenu. Ou utilisez une fermeture:

$("div") 
    .click((function (url) { 
     return function() { window.open(url); }; 
    })($("div a").attr('href'))) 
    .html("&gt;"); 
+3

Je pense que je suis en train de développer un LITHP de tout le parenthetheth ... – deceze