2 回答

TA貢獻1816條經(jīng)驗 獲得超4個贊
只需選擇它并將其附加到新位置。元素將被移動,事件將保留。
$('body').on('click', 'td.select-area', function () {
var element = $('#search');
$(this)
.closest("tr")
.find('td:eq(1)')
.append(element);
});
$("#test").on("input", function (e) {
console.log(e.originalEvent.data);
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
<tr>
<td class="select-area">1</td>
<td><span id="search"><input id="test" /></span></td>
</tr>
<tr><td class="select-area">2</td><td></td></tr>
<tr><td class="select-area">3</td><td></td></tr>
<tr><td class="select-area">4</td><td></td></tr>
<tr><td class="select-area">5</td><td></td></tr>
</table>

TA貢獻1804條經(jīng)驗 獲得超7個贊
為了分享,我的問題的一個解決方案是將分離操作移到點擊事件監(jiān)聽器之外。這似乎是合乎邏輯的,因為在我的情況下,此操作只需要執(zhí)行一次。
// On document ready
var element = $('#search').detach();
$('body').on('click', '.select-area', function () {
$('tr[id_area="' + parseInt($(this).attr('area-id')) + '"]')
.find('td:eq(1)')
.html('<div id="search">' + element.html() + '</div>');
});
但是 epascarello 提到的方法更簡單,應該從頭開始。它只是不適合我的具體情況。
添加回答
舉報