2014-05-03 80 views
1

我想檢查何時錨標記沒有href值,即使href存在於標記中,然後向用戶顯示消息。例如。jQuery檢查href是否未定義

HTML:

注意 - 我不能改變這種定位的標籤的定義方式,所以我不能添加HREF =」」,在HTML是由WordPress的填充,我不想改變它

的jQuery:

$('a').click(function (e) { 
    if ($(this).attr('href') == '') { 
     alert('We do not have more info on this'); 
     e.preventDefault(); 
    } 
}) 

然而,上述代碼只能當HREF被定義爲FOL低點:

<a href="" ></a> 

如何更改我的jQuery來檢查HREF存在,但不是在我的HTML定義,像上面?我嘗試以下,但無法正常工作或:

if ($(this).attr('href') === undefined) { 

感謝

回答

0

你也可以使用如選擇:

$('a:not([href]), a[href=""]').click(function (e) { 
    alert('We do not have more info on this'); 
    e.preventDefault(); 
}) 
3

兩個undefined和一個空字符串是falsy,所以你有要做的是直接檢查屬性,而不是專門檢查空字符串

$('a').click(function (e) { 
    if (! $(this).attr('href')) { 
     alert('We do not have more info on this'); 
     e.preventDefault(); 
    } 
}); 

FIDDLE

+0

此作品謝謝。但是爲什麼Alert框會彈出所有沒有定義href的定位標記?不是e.preventDefault();假設將警報限制爲僅當前元素? – DextrousDave

+0

Nope,preventDefault阻止默認操作,即從錨點導航,但不阻止沒有hrefs的錨點被點擊。 – adeneo

+0

問題是我沒有點擊其他元素。當我單擊沒有href的一個元素時,那麼警報會生成DOM中所有其他元素,而不會定義href ......我該如何防止這種情況發生? – DextrousDave

1

您可以檢查它,undefinetrim價值和比較反對'',試試這個:

$('a').click(function (e) { 
    var href = $(this).attr('href'); 
    if (href === undefined || $.trim(href) === '') { 
     alert('We do not have more info on this'); 
     e.preventDefault(); 
    } 
}); 

Demo Link

相關問題