jQuery:$(element).text()不起作用

时间:2012-04-21 21:17:20

标签: javascript jquery html

我正在动态生成内容 - 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);
}

4 个答案:

答案 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());
});

Example fiddle

答案 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()继续按预期工作。