2010-11-10 83 views
0

我试图逐步增强一个div元素包含一个标签,以便更新div的内容,并且div的click事件打开(Javascript修改之前)的href,a。JQuery值vs参考

我有以下代码:

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

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

的问题是,当点击事件发生时,<div>的内容已经更新,所以href属性不再有效。

任何协助我将如何写这个网址被记住将不胜感激。

回答

3

东西沿着这些线路应该做的伎俩:

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

如果只有一个div,你可以跳过.each并直接保存href值到一个变量替换之前的内容。或者使用闭包:

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

我想我正在开发一个LITHP从所有的括号里开始...... – deceze 2010-11-10 08:23:03