2013-03-07 93 views
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,但span标签是在页面加载时动态创建的。如何在动态创建的输入标记中获取span标记的html

+0

所以你想为每个'edt'类输入一个等于'edt'节点当前值的值吗? – 2013-03-07 18:16:10

+0

您是否尝试将事件处理程序分配给动态创建的元素?在这种情况下,span标签?上面的代码有什么问题? – 2013-03-07 18:16:50

+0

是的... – 2013-03-07 18:17:43

回答

1

这将循环遍历每个edt类,并用与正在替换的内容相同的值替换span和input元素的内容。

$('#edit').click(function(){ 
    $('.edt').each(function() { 
     var value = $(this).text(); 
     $(this).html('<input type="text" id="" value="'+value+'" />'); 
    }); 
}); 
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. 如果处理程序应执行一次,请使用one方法而不是on
  3. 如果您使用的是HTML5文档,您还可以使用contenteditable属性而不是替换元素。
0

这是你想要实现的吗? DEMO

点击产生的看到绑定事件一些输入要素。

$('#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."); 
});