gpt4 book ai didi

Javascript事件触发创建多个按钮.on('click)

转载 作者:行者123 更新时间:2023-12-01 02:28:03 24 4
gpt4 key购买 nike

我在下面的代码中使用 HTML slim。

.page
.paper
button.button.js-copier I copy things

- content_for :js_includes do
javascript:
var startingHtml = $('.page').html();

function initializePlugin() {
$('.js-copier').each(function () {
$(this).on('click', function () {
$('.page').append(startingHtml);
$(document).trigger('page-refreshed');
});
});
}

// Run it right away
initializePlugin();

$(document).on('page-refreshed', initializePlugin);

有没有办法解决这样的问题:当我单击“我复制内容”按钮时,它会创建该按钮的多个副本,因为它会迭代所选按钮中的所有按钮?

另外,有没有更好的方法来编写这段代码。我想做的就是每当我单击任何按钮(第一个按钮和任何新按钮创建的按钮)时复制按钮

-安东尼

最佳答案

首先更改此:

  $('.js-copier').each(function () {
$(this).on('click', function () {
...

对此:

  $('.page').on('click', '.js-copier', function () {
...

阅读本文以了解 https://learn.jquery.com/events/event-delegation/#event-propagation

然后删除“page-refreshed”事件,因为您不需要它:

   $(document).trigger('page-refreshed');
...
$(document).on('page-refreshed', initializePlugin);

演示解决方案:

var startingHtml = $('.page').html();

function initializePlugin() {
$('.page').on('click', '.js-copier', function () {
$('.page').append(startingHtml);
});
}

// Run it right away
initializePlugin();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="page">
<div class="paper">
<button class="button js-copier"> I copy things</button>
</div>
</div>

关于Javascript事件触发创建多个按钮.on('click),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48567884/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com