JQuery Value vs Reference

时间:2010-11-10 08:04:06

标签: javascript jquery

我正在尝试逐步增强包含标记的div元素,以便更新div的内容并且div的click事件打开(在Javascript修改之前)的href,a。

我有以下代码:

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

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

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

任何有关我如何写这个以便记住网址的帮助将不胜感激。

1 个答案:

答案 0 :(得分: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;");