Здесь моя ситуация, у меня есть таблица, которая может динамически добавлять/удалять строки, и мне нужно привязать строку удаления при загрузке страницы.
Вот мой код:
<script type="text/javascript">
$(document).ready(function(){
$(".btnRemoveRow").bind("click", removeRow); });
</script>
Но мне также нужно привязать еще один removeRow, когда я добавляю строки здесь на моем внешнем js
function addRow(){
{--add row code here--}
$(".btnRemoveRow").bind("click", removeRow);
}
так что вновь добавленные строки будут также связываться с функцией removeRow,
вот моя функция removeRow:
function removeRow(){
var row = $(this).closest('tr');
var selected = row.find('input.qty,input.price,textarea,select').val();
$.getScript("calculate.js", function(){});
if(selected)
{
var r=confirm("Confirm Remove?");
if (r==true)
{
row.find('input.qty,input.price,textarea,select').attr("disabled", true);
row.find('input.hidden-deleted-id').val("yes");
row.find('.subtotal>center>h3').text("0");
calculate();
row.hide();
return false;
}
else
{
return false;
}
}
else{
row.find('input.qty,input.price,textarea,select').attr("disabled", true);
row.find('input.hidden-deleted-id').val("yes");
row.find('.subtotal>center>h3').text("0");
calculate();
row.hide();
return false;
}
};
Случай 1: когда я удаляю строку без добавления строк сначала, она отлично работает (диалоговое окно появляется только один раз).
Случай 2: когда я сначала добавляю строку, а затем удаляю строки, которые уже были привязаны на странице, диалоговое окно появляется дважды.
Случай 3: когда я удаляю строки, которые я добавил, он отлично работает (диалог появляется один раз).
(PS: все еще изучающий JavaScript)
Любая идея, как я могу решить случай №2, пожалуйста?
Добавьте один обработчик событий, который делегирован, таким образом он будет работать для существующих элементов и будущих элементов
<script type="text/javascript">
$(document).ready(function(){
$(document).on("click", ".btnRemoveRow", removeRow);
});
</script>
замените document
ближайшим нединамическим родительским элементом.
Попробуй это:
<script type="text/javascript">
$(function(){
$(".btnRemoveRow").click(function(){removeRow();});
});
</script>
event delegation
off()