我按照 this 答案的说明在用户单击按钮时复制 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>

我哪里错了?为什么第二个按钮(模态之外)有效,但第一个按钮无效?

最佳答案

我猜你的模态是以一种或另一种方式注入(inject)的动态标记。那里有各种模态风格/库,但我怀疑您的动态内容没有合适的事件处理程序。 jQuery 为我们提供了一种方法来使用 delegate()



我做了一个非常简单的例子来演示这个特定的场景。我正在制作和注入(inject)带有按钮的动态内容,通过 click.on() 连接到 .delegate() 处理程序。观察以下示例以及两者之间的差异...

// 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 - 工作演示

关于javascript - 如何为动态内容(模态)触发 jQuery 单击事件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32703673/

10-15 04:07