我想要更改div中的所有鏈接,使其不再引用頁面,但在單擊時運行javascript函數。要做到這一點,我寫了這個功能:設置onclick <a>使用javascript
function buildPageInDiv(htmlString){
console.log(typeof htmlString);
$div = $(htmlString).children("div#myDiv");
$div.children("a").each(function(i, element){toJavascriptLinks(element)});
document.getElementById("targetDiv").innerHTML = $div[0].innerHTML;
}
調用這個函數:
function toJavascriptLinks(element){
element.href="#";
element.onclick = function(){console.log('Yeah!')};
console.log(element);
}
現在,當我運行「buildPageInDiv」,「串」被打印在控制檯上,所有的「href」點擊看原圖
<a href="#">
的任何跡象,並點擊鏈接不顯示在控制檯上的任何內容:變更爲「#」併爲每股利控制檯打印的元素中。
我在這裏錯過了什麼?
編輯:
我正在尋找錯誤的地方。問題在於,在將innerHTML附加到'targetDiv'之前,我正在運行'toJavascriptLinks(element)'。對於href屬性來說這不成問題,但它是針對onclick屬性的。簡單的辦法就是把它放在「targetDiv」第一,比運行「toJavascriptLinks(元素)」開「targetDiv」:
function buildPageInDiv(htmlString){
console.log(typeof htmlString);
var content = $(htmlString).children("div#myDiv")[0].innerHTML;
document.getElementById("targetDiv").innerHTML = content;
$("div#targetDiv").children("a").each(function(i, element) toJavascriptLinks(element)});
}
問題雖然沒有在代碼中,我最初發布,下面全面的解答使我到解決方案。
謝謝你的回答,但我一直在澄清。在$ div之前,有一行:var $ div = $(htmlResponse).children(「div#idOfDiv」); htmlResponse是一些包含要解析的html的變量。我會更新問題 – Jos 2012-08-17 12:37:28
先試試演示。 – GitaarLAB 2012-08-17 12:40:35
@GitaarLAB你有沒有關於吊裝? :) – Zango 2012-08-17 12:45:07