2017-06-19 149 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; 
});