Я новичок в Javascript, и я разработал следующий код, который работает только один раз.Dblclick прослушиватель только один раз в моем коде
function display(arr) {
$(".tbl tbody").empty();
for (i = 0; i < arr.length; i++) {
$(".tbl tbody").append('<tr class="tblrow" id = "'+i+'"> <td><input id="editInput" type="text"/>'+arr[i].Empid+'</td><td>'+arr[i].name+'</td><td>'
\t \t \t \t \t +arr[i].pd+'</td><td>'+arr[i].unplannedleaves+'</td><td>'+arr[i].response_time+'</td><td class = "tt"><button class="delbtn" id ="btn'+i+'">Delete</button></td></tr>');
$("td").css("text-align", "center");
$("td").css("border", "1px solid black");
$(".tt").css("border", "none");
$(".tbl").css("border", "none");
$(".delbtn").css("display", "none");
}
}
$("tr").on('dblclick', function() {
var s = this.id;
$("#btn" + s).css("display", "block");
});
$(".delbtn").click(function() {
var s = this.id;
var k = s.slice(3);
arr.splice(k, 1);
display(arr);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="addelem">
<table class="tbl1">
<tr>
<td>
<input id="empid" type="text" placeholder="EmpId">
</td>
<td>
<input id="name" type="text" placeholder="Name">
</td>
<td>
<input id="pd" type="number" placeholder="Pds Delivered">
</td>
<td>
<input id="unp" type="number" placeholder="Unplanned leaves">
</td>
<td>
<input id="rsp" type="number" placeholder="Response Time">
</td>
</tr>
</table>
<button id="submit">Submit</button>
<button id="cancel">Cancel</button>
</div>
После моей таблицы получает отображается с помощью display
метода. При первом запуске строки она работает так, как ожидалось, и отображает кнопку удаления. Я нажимаю delete, строка удаляется, а таблица повторно отображается. Однако после этого строка больше не будет dbl-clickable. Я попробовал отладку, но элемент управления даже не войдет в прослушиватель dblclick.
Может кто-нибудь объяснить, почему это так. Что здесь происходит?
Я попытался это вместо '$ ("TR") на ('DblClick', функция() {\t \t \t \t \t \t вар s = this.id; \t \t \t \t \t \t $ ("# btn" + s) .css ("display", "block"); \t \t \t \t \t}); ' –
Можете ли вы объяснить, почему это не работает? –
Потому что так: '$ (" tr "). On ('dblclick', function() {var s = this.id; $ (" # btn "+ s) .css (" display "," block ");}); ', все tr подписываются на ваше событие при загрузке страницы, но tr, которое вы добавите динамически после загрузки страницы, не будут привязаны к событию dblclick. Посмотрите на эту страницу: http://api.jquery.com/on/#on-events-selector-data в разделе «Прямые и делегированные события» –