2
<span class="edt">ddddd</span>
    <span class="edt">ssss</span>
    <span class="edt">aaaaa</span>
    <a id="edit">edit</a>


    $('#edit').click(function(){

       $('.edt').html("<input type=\"text\" id=\"\"  value=\"\" /> ") 
    });

私がやりたいのは、jqueryによって作成された入力でspanタグのhtml部分を取得することです。より良い解決策は、変数のIDでhtmlを渡すことですが、スパンタグはページの読み込み時に動的に作成されます。

4

3 に答える 3

1

これにより、各クラスがループされedt、スパンのコンテンツが置き換えられ、入力要素が置き換えられるコンテンツと同じ値に置き換えられます。

$('#edit').click(function(){
    $('.edt').each(function() {
        var value = $(this).text();
        $(this).html('<input type="text" id="" value="'+value+'" />');
    });
});
于 2013-03-07T18:19:55.557 に答える
1

#edit要素が動的に作成される場合は、イベントを委任する必要があります。

$(document).on('click', '#edit', function(){
   $('span').html(function(index, oldHTML){
       return '<input type="text" id="id'+ index +'"  value="'+ oldHTML +'" />';
   })
});

http://jsfiddle.net/yHbsa/

要素のコンテンツを編集したいようです。いくつかの提案があります。

  1. Focus入力(プログラム)およびblurイベントで、入力をそれらの値に置き換えます。
  2. ハンドラーを1回実行する必要がある場合は、oneの代わりにメソッドを使用してonください。
  3. HTML5 doctypeを使用している場合はcontenteditable、要素を置き換える代わりに属性を使用することもできます。
于 2013-03-07T18:19:57.513 に答える
0

これはあなたが達成しようとしていることですか?デモ

生成されたいくつかの入力要素をクリックして、バインドされたイベントを表示します。

$('#content').on("click", "#edit", function () {
    $.each($('.edt'), function (i, k) {
        $(k).removeClass("edt");
        k.innerHTML = "<input type='text' id='' value='" + k.innerHTML + "' />";
    });
});

$('#content').on("click", "input", function () {
    alert("Some event.");
});
于 2013-03-07T18:20:05.230 に答える