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

jQuery: $(element).text() doesn't work

本文关键字:text 不起作用 element jQuery      更新时间:2023-09-26

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

如果你使用 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());
});

示例小提琴

将代码更改为:

div.innerHTML='<a class="aClass" onclick="showMyText(this)">Link Text</a>';

jsFiddle 示例

我会采取稍微不同的方法并使用"live"方法,该方法允许您在将 click 事件插入 DOM 后将其绑定到动态创建的元素

$(document).ready(function(){
  $('#dinamicni_div').html('<a class="aClass" href="#">Link Text</a>');
  $(".aClass").live('click',function(){
    alert($(this).text());
  });
});

我发现text()在用户手动编辑文本区域后停止工作。 val()继续按预期工作。