我點擊一個按鈕後顯示一個確認模式,在這個模式中有兩個按鈕,「取消」和「添加」。 「添加」會將數據擴展到自己的項目列表中,並且工作正常。但如果我點擊「取消」,然後再次顯示這個模式,如果我點擊「添加」,我的項目列表將被消耗的時間取決於我點擊「取消」之前多少次。我在.on(「hidden.bs.modal」)上嘗試.data(「bs.modal」,null)或.off('click')。他們都不能解決我的問題。如何防止自舉模態中的多觸發器?
樣品鏈接Sample
<div class="major">
<button class='btn btn-danger btn-xs' type="submit" name="additem" value="Add"><span class="fa fa-times"></span> add</button>
<ul id="itemlist" data="0">
</ul>
</div>
<div class="major">
<button class='btn btn-danger btn-xs' type="submit" name="additem" value="Add"><span class="fa fa-times"></span> add</button>
<ul id="itemlist" data="100">
</ul>
</div>
<!-- Modal -->
<div id="confirm" class="modal hide fade">
<div class="modal-body">
Are you sure?
</div>
<div class="modal-footer">
<button type="button" data-dismiss="modal" class="btn btn-primary" id="add">Add</button>
<button type="button" data-dismiss="modal" class="btn">Cancel</button>
</div>
</div>
腳本,
$('button[name="additem"]').on('click', function(e){
var $major=$(this).closest('.major');
e.preventDefault();
$('#confirm').modal({ backdrop: 'static', keyboard: false })
.one('click', '#add', function (e) {
var num = parseInt($major.children("#itemlist").attr("data")) + 1;
$major.children("#itemlist").append("<li>new item" + num + "</li>");
$major.children("#itemlist").attr("data", num);
});
});
$("#confirm").on("hidden.bs.modal", function(){
$(this).data("bs.modal", null);
$("#add").off("click");
});
u能創造小提琴或花掉的問題:
更新小提琴,可以發現? –
是的,我做到了。在代碼的上面。謝謝 – user2189138