我有一个javascript片段,拦截链接点击并将它们变为哈希(我知道哈希ID不在W3C推荐中:) :)
$("a").click(function(event) {
event.preventDefault();
newHash = $(this).attr("hash-id");
console.log(newHash);
if (typeof newHash === "undefined"){
window.location = $(this).attr("href");
}
else{
window.location.hash = "#" + newHash;
}
});
基本上每当用户点击任何链接时,如果没有链接,它应该得到它的“hash-id”,而不是只是定期加载页面。 现在:它在我的网站,页脚,标题上运行良好,但在我点击“注入”内容后
$("#container").load(href + " #content");
它不起作用,不会将任何输出返回到控制台,警报,虚无..
我尝试将代码放在两个页面的开头,结尾,页脚,但没有任何作用,任何人都知道如何使其工作?
答案 0 :(得分:3)
您应该使用$("a").live("click", function(){..})
,以便将事件侦听器绑定到所有(现在和以后的)a
元素。
当您使用.click(func)
= .bind("click", func)
时,事件侦听器仅针对所有当前(现有)元素添加,不添加到将来添加的元素。
答案 1 :(得分:1)
您应使用live()
代替click()
,这意味着bind()
。
bind
仅适用于jQuery对象选择的当前元素,而live
也会影响添加到文档中的新元素。
检查文档。 http://api.jquery.com/live。