1)
要解决您的第一个问题,您需要记住您正在将 a 附加select
到带有click
事件的元素!因此,每次您click
在 上时,您都会在... 上select
触发浏览器,这就是为什么您在选择过程中被迫保留的原因。click
.edit
mousedown
要修复它,只需添加一个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
中收集:HTML
option
请参阅此工作小提琴示例!
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);
});