我正在动态生成内容 - div包含其中的链接。链接应该在单击时显示包含链接文本的弹出窗口(showMyText函数)。相反,我得到一个空字符串:(
为什么这不起作用?我搜索过Stackoverflow和jQuery API,它应该可以工作。
function a(){
var div=document.createElement("div");
div.innerHTML='<a class="aClass" href="javascript:showMyText(this)">Link Text</a>';
var parent_div=document.getElementById('dinamicni_div');
parent_div.appendChild(div);
}
function showMyText(link){
var txt=$(link).text();
alert(txt);
}
答案 0 :(得分:3)
如果您正在使用jQuery来获取text()
为什么不将其用于其他所有内容呢?
function a() {
var $div = $("<div></div>");
var $a = $("<a></a>")
.attr("href", "#")
.addClass("aClass")
.text("Link text")
.appendTo($div);
$div.appendTo("#dinamicni_div");
}
$("#dinamicni_div").on('click', '.aClass', function() {
alert($(this).text());
});
答案 1 :(得分:2)
将您的代码更改为:
div.innerHTML='<a class="aClass" onclick="showMyText(this)">Link Text</a>';
<强> jsFiddle example 强>
答案 2 :(得分:0)
我会采用稍微不同的方法并使用“实时”方法,这将允许您将click事件绑定到动态创建的元素一旦将其插入DOM
$(document).ready(function(){
$('#dinamicni_div').html('<a class="aClass" href="#">Link Text</a>');
$(".aClass").live('click',function(){
alert($(this).text());
});
});
答案 3 :(得分:0)
我发现用户手动编辑文本区域后text()
停止工作。 val()
继续按预期工作。