1)
要解决您的第一个问题,您需要记住您正在将 a 附加select到带有click事件的元素!因此,每次您click在 上时,您都会在... 上select触发浏览器,这就是为什么您在选择过程中被迫保留的原因。click.editmousedown
要修复它,只需添加一个span并将单击绑定到跨度,保持select附加到.edit:
请参阅此工作小提琴示例!
相关的 HTML
<tbody>
<tr><td>xxx</td><td class="edit"><span>yyy</span></td></tr>
<tr><td>xxx</td><td class="edit"><span>yyy</span></td></tr>
<tr><td>xxx</td><td class="edit"><span>yyy</span></td></tr>
</tbody>
查询
$("#my-table td.edit").on("click", "span", function(){
var $t = $(this),
$html = $t.parent(),
role = $t.text();
$html.html($("#select-clone").clone(false).removeAttr('id'));
});
2)
要将选定的选项文本放置在您的 上.edit,您只需要将事件处理程序绑定到,并从选定的change中收集:HTMLoption
请参阅此工作小提琴示例!
jQuery
$('.edit').on("change", "select", function() {
var $t2 = $(this),
val = $(this).find(':selected').html();
$t2.parent().html(val);
});
3)
要让 step 01 e 02 循环,您需要将选定的值包装option到 aspan中,以在用户单击文本时保持click事件触发:
请参阅此工作小提琴示例!
jQuery
$('.edit').on("change", "select", function() {
var $t2 = $(this),
$span = $('<span>'),
val = $span.html($(this).find(':selected').html());
$t2.parent().html(val);
});