我正在尝试逐步增强包含标记的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属性不再有效。
任何有关我如何写这个以便记住网址的帮助将不胜感激。
答案 0 :(得分:3)
这些方面的东西应该可以解决问题:
$("div").each(function () {
var url = $('a', this).attr('href');
$(this).click(function () { window.open(url); }).html(">");
});
如果只有一个div
,则可以跳过.each
,只需将href
值保存到变量中,然后再替换内容。或者使用闭包:
$("div")
.click((function (url) {
return function () { window.open(url); };
})($("div a").attr('href')))
.html(">");