如何为动态内容(模态)触发jQuery点击事件?
How can I fire a jQuery click event for dynamic content (modal)
我按照这个答案中的说明在用户点击按钮时复制URL。似乎工作得很好,除了当我把我的按钮移动到一个模态窗口。我丢失了click
事件处理程序。
function copyTextToClipboard(text) {
[...] // working implementation
}
$(function() {
var currentPostUrl = window.location.href + "?ref=blogshare"
var currentPostTitle = $('.post-title').text().trim();
$('.js-copy-bob-btn').on('click', function(event) {
copyTextToClipboard(currentPostUrl);
console.log('copied')
});
$('#myModal').appendTo("body")
});
这是我的HTML:
<!-- Modal -->
<div id="myModal" class="modal fade" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button class="close" type="button" data-dismiss="modal">×</button>
</div>
<div class="modal-body">
<div class="row modal-icons">
<div class="col-xs-5 text-center">
<a class="copy-url js-textareacopybtn" title="Step 2: Copy URL Button">
<h3>Copy Shareable Link</h3>
</a>
<-- THE BELOW BUTTON DOES NOT WORK AS DESIRED -->
<button class="js-copy-bob-btn">Copy Url</button>
</div>
</div>
</div>
</div>
</div>
</div>
<-- THE BELOW BUTTON WORKS AS DESIRED (NO MODAL)-->
<button class="js-copy-bob-btn">Copy Url</button>
我哪里错了?为什么第二个按钮(模态外)工作,但不是第一个按钮?
我猜你的模态是动态标记,以这种或那种方式注入。有各种各样的模式风格/库在那里,但我怀疑你的动态内容没有适当的事件处理程序。jQuery为我们提供了一种使用delegate()
为匹配选择器的所有元素附加一个处理程序到一个或多个事件,现在或将来,基于一组特定的根元素。
我做了一个非常简单的例子来演示这个特定的场景。我正在制作和注入动态内容,有一个按钮,通过.on()
和.delegate()
连接到click
处理程序。观察下面的例子和两者之间的区别…
// faux modal
$('body').append('<div class="modal"><button class="js-copy-bob-btn">Copy Url</button></div>');
// does not work
$('.js-copy-bob-btn').on('click', function(event) {
console.log('copied via on');
});
// works - dynamic content
$('body').delegate('.js-copy-bob-btn', 'click', function() {
console.log('copied via delegate');
});
JSFiddle Link - working demo
相关文章:
- 如何通过JQuery触发JS原生甚至addEventListener(“change”,函数)
- 如何使用 jQuery 触发对包含许多列表项的列表的单击
- jQuery:触发点击或聚焦输入字段
- jQuery触发另一个事件中的事件
- 当输入键由jquery触发时,我的模型是未定义的
- 使用自定义汉堡包按钮用jQuery触发MDBootstrap侧导航
- 在隐藏输入上使用jQuery触发按键事件
- 使用jQuery触发原型更改事件
- JQuery触发菜单上的fadeIn和fadeOut
- 防止JQuery触发后重新加载页面
- 可以't在Chrome扩展中使用jQuery触发点击
- 通过 jQuery 触发引导模式
- 如何使用jQuery触发此:悬停翻转效果
- 如何使用jquery触发动态创建的引导弹出框
- 使用 jQuery 触发输入事件
- 如何使用jsonp/jquery触发函数
- 使用 jQuery 触发注销和重定向
- setTimeout 立即使用 jQuery 触发
- 如何从 jQuery 触发鼠标移动事件
- 使用 jQuery 触发 Enter 事件