4

我正在动态生成内容 - 带有链接的 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

4 回答 4

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

示例小提琴

于 2012-04-21T21:25:54.473 回答
2

将您的代码更改为:

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

jsFiddle 示例

于 2012-04-21T21:23:52.957 回答
0

我会采用稍微不同的方法并使用“live”方法,一旦将它插入 DOM,您就可以将点击事件绑定到动态创建的元素

$(document).ready(function(){
  $('#dinamicni_div').html('<a class="aClass" href="#">Link Text</a>');
  $(".aClass").live('click',function(){
    alert($(this).text());
  });
});
于 2012-04-21T21:30:34.483 回答
0

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

于 2014-07-03T15:09:22.483 回答