2012-07-02 89 views
2

出於某種原因,這行代碼返回undefined爲$(this).attr("href")

$("a").attr("href", "javascript:page('" + $(this).attr("href") + "')"); 

我怎樣才能獲得價值?

+5

鏈接到JavaScript是臭的。如果可能的話,請改用事件 – Kos

+1

使用「javascript:」URL是很醜的。爲什麼不使用「點擊」處理程序? – Pointy

回答

9
$("a").click(function(e){ 
    e.preventDefault(); 
    page(this.href); 
}); 
5

嘗試:

$("a").attr("href", function (index, oldHref) { 
    return "javascript:page('" + oldHref + "')"); 
}); 

檢查出attr有關,需要一個函數引用過載信息的文檔。

雖然@Pointy指出,你應該考慮編寫一個事件處理程序,而不是在你的標記中使用javascript:

+1

在這裏使用'.prop()'而不是'.attr()'可能是一個好主意,但是。 – Pointy

+0

@點我不明白。首先使用'javascript:'不是一個好主意,而不是一個點擊處理程序:X – Esailija

+1

@Esailija我同意 - 我只是在OP上輸入了一個評論來說明這一點。 – Pointy

1

如果你想這樣做(更新頁面上的鏈接的所有href屬性),你可以做

$("a").each(function() { 
    $(this).attr("href", "javascript:page('" + $(this).attr("href") + "')"); 
}); 
2

這是不需要在你的href屬性

的Javascript一種替代方法
$('a').click(function(e) { 
    e.preventDefault(); 
    page(this.href); 
}) 
+0

+1代替標記中的嵌入式腳本。 – Nope

+0

您的代碼有一個錯誤:一個額外的右括號。它應該是'.click(函數(e){...' – BryanH

+0

BryanH:修復它。謝謝 –

2

你不需要內嵌的JavaScript,爲什麼不象下面這樣:

$("a").click(function(){ 
    page(this.href); 
    return false; 
}); 
+0

+1替代嵌入式腳本的標記。 – Nope