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

少し異なるアプローチを取り、動的に作成された要素が 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 に答える