javascript - 为什么 Jquery 代码被多次触发
问题描述
我有一个从另一个页面打开模式的按钮。一个模式是打开的,如果.myBtn
单击模式按预期关闭,我会收到一个单击警报,但是当open modal
再次按下时,我会在模态关闭时收到 2 个单击警报。为什么会这样,我怎样才能让 dom 中的所有元素“工作”,但避免脚本被多次触发?非常感谢。
html
<button id="edit_credit" data-modal="myModal" class="btn btn-small btn-blue credit_btn">Open Modal</button>
jQuery
$(document).ready(function() {
//Open Modal
$('.credit_btn').on('click', function() {
$('.modal-container').load('modal_test.php',
function() {
$('#myModal').modal({show:true});
}
);
$(document).on("click", ".myBtn", function(){
alert('click');
});
});
});//End of doc
Modal_test.php(部分)
<button type="submit" id="btn" data-dismiss="modal" value="submit" class="btn btn-blue pull-right myBtn">
Save</button>
<button type="button" class="btn btn-red pull-left" data-dismiss="modal">Close</button>
</form>
</div><!-- /.modal-footer -->
解决方案
因为(见评论):
$('.credit_btn').on('click', function() {
// Everytime you click on .credit_btn
// ...
// You bind that event again (and again and again)
$(document).on("click", ".myBtn", function(){
alert('click');
});
});
您可以在单击事件处理之外安全地绑定它
$(document).ready(function() {
//Open Modal
$('.credit_btn').on('click', function() {
$('.modal-container').load('modal_test.php',
function() {
$('#myModal').modal({show:true});
}
);
});
$(document).on("click", ".myBtn", function(){
alert('click');
});
});
(虽然我会将该类从“myBtn”重命名为“closeModal”或类似的名称,但在编码时要具体说明;))
推荐阅读
- bash - GNU Parallel:给出关于执行时间的提示
- c++ - 为什么我得到一个编译器错误,虽然大小是恒定的?
- node.js - 运行 Heroku 应用程序未显示上传文件中的更改
- docker - Elasticsearch pod 未运行正在重新启动
- php - 如何在 PHP 的 Visual Studio Code 中选择包括 $ 在内的整个变量名?
- html - 如何创建一个内容覆盖我的滑块的 div?
- javascript - 无法在.env文件vue cli 3中指定url
- php - 使用连接到 mysql 的 php 变量更改样式表
- android - 匕首中的依赖组件引发错误
- asp.net-mvc-4 - 使用 Asp.net MVC 模型创建 HTML 表