jquery 如何编写一个JavaScript函数来向DOM添加一个按钮...在单击时调用相同的函数

m3eecexj  于 2023-04-05  发布在  jQuery
关注(0)|答案(2)|浏览(105)

我正在尝试编写一个JavaScript / jQuery函数,当点击类为“add-row”的按钮时调用该函数。该函数将HTML附加到DOM中,添加 * 另一个 * 具有相同类的按钮。我想要的是,当第二个按钮被点击时,该函数将再次被调用,并创建另一个按钮,依此类推。
下面是第一个按钮的代码:

<div>
    <label for="add_row-0"></label><br>
    <button type="button" class="add-row">Add Another Item</button>
</div>

下面是JavaScript函数:

$(document).ready(function(){
        $(".add-row").click(function(){

          
            $(".add-row").last().after(
                `<div>
                    <label for=${button_identifier}></label><br>
                    <button type="button" class="add-row">Add Another Item</button>
                    </div>
                </div>`
            );
         

        });
 });

这不起作用-发生的情况是,第一个按钮工作正常,并调用创建第二个按钮的函数,但单击第二个按钮什么也不做。

zwghvu4y

zwghvu4y1#

在所有带有按钮的<div>容器的最近静态祖先上使用事件委托。

$(document).on('click', '.add-row', function(){
    // code here
});

这里使用document作为示例,但是为了获得更好的性能,您应该将其替换为最近的静态祖先。

6fe3ivhb

6fe3ivhb2#

在你的故事里有两件事要说,
1-.click()函数不能作用于dom中新附加的元素,它只作用于页面加载时呈现的元素。
2-为了让你的click函数在新添加的元素上工作,你需要使用.on(“click”)函数,所以你监听文档中的click。

$(document).on(click, ".your-selector", function(){
    // your code here
});

所以你的代码应该是

$(document).ready(function () {
    $(document).on(click, ".add-row", function () {
      $(".add-row")
        .last()
        .after(
          `<div>
               <label for=${button_identifier}></label>
                <br>
                <button type="button" class="add-row">Add Another Item</button>
            </div>`
        );
    });
  });

相关问题