jQuery load()后不影响div的JavaScript代码

时间:2011-10-04 10:26:12

标签: javascript jquery load

我有一个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");

它不起作用,不会将任何输出返回到控制台,警报,虚无..

我尝试将代码放在两个页面的开头,结尾,页脚,但没有任何作用,任何人都知道如何使其工作?

2 个答案:

答案 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