Javascript jQuery:$(元素).text()不';行不通

Javascript jQuery:$(元素).text()不';行不通,javascript,jquery,html,Javascript,Jquery,Html,我正在动态生成包含链接的内容div。单击链接时,应弹出一个包含链接文本的弹出窗口(showMyText函数)。相反,我得到一个空字符串:( 为什么这不起作用呢?我已经搜索了Stackoverflow和jQueryAPI,它应该能起作用 function a(){ var div=document.createElement("div"); div.innerHTML='<a class="aClass" href="javascript:showMyText(this)"&

我正在动态生成包含链接的内容div。单击链接时,应弹出一个包含链接文本的弹出窗口(showMyText函数)。相反,我得到一个空字符串:(

为什么这不起作用呢?我已经搜索了Stackoverflow和jQueryAPI,它应该能起作用

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);
}
函数a(){
var div=document.createElement(“div”);
div.innerHTML='';
var parent_div=document.getElementById('dinamicni_div');
父/子分部(分部);
}
函数showMyText(链接){
var txt=$(link.text();
警报(txt);
}
将代码更改为:

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

div.innerHTML=”

如果您使用jQuery获取
文本()
为什么不将其用于其他所有内容

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());
});
函数a(){
变量$div=$(“”);

var$a=$(“

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

$(document).ready(function(){
  $('#dinamicni_div').html('<a class="aClass" href="#">Link Text</a>');
  $(".aClass").live('click',function(){
    alert($(this).text());
  });
});
$(文档).ready(函数(){
$('#dinamicni_div').html('');
$(“.aClass”).live('click',function(){
警报($(this.text());
});
});

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

因为
链接
不是dom节点,没有有效的选择器,或者没有与选择器匹配的元素。然后我如何访问(a href)元素调用函数?使用关键字this它也不起作用(我认为这是引用函数本身)哇,onclick vs href。。Thanks@PrimožKralj,不要使用
onclick=
href=“javascript:“
。只要涉及jQuery,就可以轻松避免完全使用内联JavaScript。因为我刚刚开始探索jQuery:)谢谢,这看起来太棒了!@PrimožKralj,这确实是最好的答案,因为它利用jQuery的强大功能完全消除了任何内联JavaScript。Sparky,我正在进行更改(包括删除内联JS):
live()
已被弃用。您不应该使用它,因为它最终将被删除。对于1.7+,请使用
on()
,否则请使用
delegate()。