2014-03-06 54 views
0

我有一個想法,我想實施到我正在工作的網站。我已經知道它是如何工作的,但我不完全確定如何拼湊這些部分。檢查jQuery中的空href屬性

因此!!我想檢查域名並在必要時生成警告框。

假設我們有兩個域:

test.domain.com & domain.com 

如果我們在test.domain.com並有在href (缺少的環節),我想一個警告框,裏面沒有任何內容彈出說「MISSING LINK」。如果href裏面有內容,只要忽略它(不缺少鏈接)

<a href="">Missing Link</a> 
<a href="http://google.com">Not Missing Link</a> 

然後,如果我們是在domain.com我想了jQuery仍然存在於代碼,但如果被點擊一個缺少的環節它什麼都不做。因爲它只是重定向到主頁 - 並不是最好的旅程,但比插入式彈出框好得多。

這樣我就可以使用一小段代碼在測試階段檢查丟失的鏈接,但不必在每次將其發送到實際域時將其刪除。

如果有任何不合理的地方,請詢問!

謝謝萬,真的很感謝幫助!

回答

2
$(document).on("click", 'a[href=""]', function(evt) { 
    if(window.location.hostname.indexOf("test")!==-1) { 
     alert("broken"); 
    } else { 
     window.location.href = "foo.html"; 
    } 
    evt.preventDefault(); 
}); 

個人,如果我是在做測試頁面,以確定是否一個環節斷了,我會做一些,這樣他們就站出來時,頁面打開。而不是點擊查找。

if(window.location.hostname.indexOf("test")!==-1) { 
    $('a[href=""]').css("background-color", "red"); 
} 
+0

感謝您的幫助 - 在彈出窗口後,鏈接仍然會將您帶到主頁,因爲它沒有彈出窗口。這可以解決嗎? – Nick

+2

不知道爲什麼它會帶你到主頁...,但添加evt.preventDeafult();更新的答案 – epascarello

+1

喲,很好的答案結合我的 - 把'e.preventDefault(); 'alert'上方'''broken'); ' –

1

下面是一些讓你開始的代碼。它感覺我好像無論你在嘗試什麼,我們都完全錯誤的做法。

if (location.host === 'test.domain.com' && !$('a[href=""]').length) { 
    alert('MISSING LINK'); 
} 
0

是否有此功能?

$(document).ready(function() { 
    $('a').click(function(e) { 
    var a = $(this); 
    e.preventDefault(); 
    if($.trim(a.prop('href')) == "") 
    { 
     alert("No link") 
    } 
    else 
    { 
     window.location = $.trim(a.prop('href')); 
    } 
    }); 
}); 
+0

我無法讓這個工作對不起! – Nick

+0

真的嗎?爲我工作..不能做一個jsfiddle因爲它會解決空href是它不是:(我做了一個快速編輯嘗試.. –

+0

也 - 如果你運行該代碼,它不工作,你可以嘗試'console.log''。$ .trim(a.prop('href')'部分並確保它不會以undefined返回。在這種情況下,它應該已經給你帶來了某些地方。 –