2014-07-14 105 views
0

我有一個動態創建一個錨標記,這種定位的標籤有這樣一個onclick事件:onclick事件創建錨標記

$('#'+educationHistoryId).append("<span>"+degreeTitle+"</span>" + "<a href='javascript:void(0)' onclick='deleteEducationLevel(" + educationHistoryId + ");'>Delete</a>"); 

當我點擊這個錨我的js錯誤說:

TypeError:對未實現接口HTMLElement的對象調用'click'。

我懷疑有些字符轉義問題,但無法解決。

新增

生成的html:

<div id="ff8081814734be020147357beda5002b"><span>A Level</span><a onclick="deleteEducationLevel(ff8081814734be020147357beda5002b);" href="#">Delete</a></div> 
+0

你可以用這個函數的全部功能做一個小提琴,所以我們知道變量是如何設置的,以及鏈接的html是什麼樣的?查看您的源代碼以確保字符正確轉義 –

+0

您確定定義了deleteEducationLevel嗎?請發佈您的所有代碼。 – Ben

+0

您是否嘗試過使用bind()而不是使用內聯腳本? http://api.jquery.com/bind/也許這可以避免逃避問題? –

回答

2

嘗試用以下替換該行,所以該事件勢必是這樣的:

var $link = $("<a href='javascript:void(0)'>Delete</a>"); 

$link.on("click", function() { 
    deleteEducationLevel(educationHistoryId); 
}); 

$('#'+educationHistoryId).append("<span>"+degreeTitle+"</span>").append($link); 

在我(非常減少)測試,這似乎工作:http://jsfiddle.net/E7LRt/

+0

有多個錨點標籤,它們是動態創建的並且具有唯一的ID。 – Abs

+0

是的,如果你用這6行代替你的JS的一行,這應該仍然有效。 –

+0

Working ..謝謝Genius – Abs

0

是否真的需要用一條線來做到這一點? 我建議以下解決方案:

var $anchor = $(document.createElement("a")).attr("href","javascript:").text("Delete").on("click",function() { 
    alert("clicked!"); 
    alert("educationHistoryId: " + educationHistoryId); 
}); 

$("body").append("<span>" + degreeTitle + "</span> ",$anchor); 

這個偉大的工程:Fiddle

我總是儘量避免使用內聯事件處理器。我認爲這是不好的做法。

0

給跨度一個類並使用事件委託。

然後,您可以將點擊事件綁定到現有父級(假設元素爲id= "#"+educationHistoryId在事件處理程序附件發生時存在),然後將事件委託給新添加的鏈接。

$("#"+educationHistoryId).on("click", <class>, function(){ 
deleteEducationLevel(educationHistoryId); 
});