2017-06-19 57 views
0

I'm currently loading my page data dynamically clicking on an element like this:加载关于<a href="url_of_data"> click

<a onclick="load('url_of_data')">Some Text</a>

But for a better UX I now want to have an element like this:

<a href="url_of_data">Some Text&</a>

and then just use preventDefault like this;

$("a").click(function(e){ 
    var self = $(this); 
    var href = self.attr('href'); 
    e.preventDefault(); 

    load(href);   
}); 

I got this code from this问题的动态数据。

但它不起作用,该网站仍在重新加载而没有运行该功能。


我现在每次加载动态内容时都会应用点击处理程序,它工作正常。

+0

'load()'的代码在哪里?抛出什么错误?给出一个适当的解释应该发生什么......破碎的代码不是一个很好的替代解释 – charlietfl

+0

当'a'标签本身被动态加载时,你必须重新应用点击处理程序或者你必须使用jquery的'on带有附加选择器参数的函数重载。 –

+0

好吧,你是对的,我现在还在load()函数中添加了click()事件并且它可以工作,谢谢 –

回答

0

我只是需要重新应用点击处理程序,每次加载动态内容。

现在它工作正常

0

您将需要指定内容将被加载到的容器div。

$("a").click(function(e){ 
    var self = $(this); 
    var href = self.attr('href'); 
    e.preventDefault(); 

    //Replace "self" with the container you want to load the content into, e.g. $("#myDiv").load(href); 
    self.load(href);   
}); 
+0

你选择了anchor作为它需要加载的容器div吗? –

+0

@DouwedeHaan这只是一个例子。我不知道他的背景和计划是怎样的。他可以选择他想要的任何东西。 –

+1

确实如此,但也许你可以在代码中指出它(也可能有评论),所以你的代码更清晰。 –

0

你需要在你的函数结束

$("a").click(function(e){ 
    var self = $(this); 
    var href = self.attr('href'); 
    e.preventDefault(); 

    load(href); 
    return false;   
}); 
+0

这会说加载没有定义。 –

+0

你如何定义你的'加载'功能 –

+0

你需要将加载函数放到一个容器中,内容将被加载进去。 (self.load(href))或它没有工作。你测试过你的代码吗?它会返回一个错误。 –

-1
$("a").click(function(e){ 
    var self = $(this); 
    var href = self.attr('href'); 

    window.location.assign(href); 
}); 

它可以帮助你

+0

这个答案没有意义 – charlietfl

0

添加return false我认为这将使工作。

$('a').click((e) => { 
    e.preventDefault(); 
    const href = $(e.currentTarget).attr('href'); 

    window.location.href = href; 
});