2017-03-17 24 views
-1

參考空HREF導致documents.ready火

Is an empty href valid?

在我來說,我是用一個空的href和這是造成documents.ready再次觸發。這是我的html:

<li><a onclick="numberOfmonthsToloadInDatabase(this)" href="" id="12Monat">12 Monat</a></li> 

當我刪除它然後它沒有火災document.ready。 我不明白這個行爲,任何解釋都會非常有幫助。我無法發表評論,因爲我沒有足夠的積分在任何帖子上添加評論。謝謝。

+6

點擊一個空的href屬性的鏈接將刷新頁面。 – j08691

+0

您可以使用'e.preventDefault()'(在'numberOfmonthsToloadInDatabase'函數內)來防止頁面重新加載。 –

+0

將你的href =「」改爲href =「javascript:void(0);」如果你不希望頁面重新加載 – gaetanoM

回答

0

從你的例子我不得不問,你爲什麼使用鏈接標籤?既然你只想要觸發onclick事件,你應該使用span並最終使用css cursor:pointer;表明它是可以接受的。

function numberOfmonthsToloadInDatabase(evt) { 
 
    alert("your clicked"); 
 
}
li span { 
 
    cursor:pointer; 
 
}
<li><span onclick="numberOfmonthsToloadInDatabase(this)" id="12Monat">12 Monat</span></li>

這樣,可以防止用於在沒有指定URL的默認鏈接行爲。你這樣做的工作量較少,而不是使用javascript preventDefault()來阻止鏈接執行默認行爲。

1

由於其他人告訴你href會導致頁面重新加載,所以你可以選擇使用href="javascript:void(0);"href="#"以避免頁面重新加載,如果你想保留使用href標籤時得到的下劃線鏈接樣式。

e.preventDefault()在該方法中將不起作用,因爲傳遞給該函數的參數不是一個事件。這是鏈接元素本身。

AFAIU您正試圖爲您的用戶創建一些月份選項。更現代的方法是使用數據屬性。你可以使用它們像這樣:

function numberOfmonthsToloadInDatabase(link) { 
 
    console.log(link.dataset.months); 
 
}
<li> 
 
    <a onclick='numberOfmonthsToloadInDatabase(this)' href='#' data-months='12'> 
 
     12 Monat 
 
    </a> 
 
</li> 
 
<li> 
 
    <a onclick='numberOfmonthsToloadInDatabase(this)' href='#' data-months='10'> 
 
     10 Monat 
 
    </a> 
 
</li>