gpt4 book ai didi

javascript - 将元素添加到 DOM 后,它不会运行相同的功能

转载 作者:行者123 更新时间:2023-11-28 11:07:42 25 4
gpt4 key购买 nike

<script type="text/javascript">
$(function(){
$('button').each(function(i){
$(this).click(function(){
$(this).after('<br /><button type="button">Button</button>');
});
});
});
</script>
<button type="button">Button</button>

如果我单击该按钮,它就会起作用并在其后面添加一个按钮。我可以继续单击同一个按钮并添加更多按钮。但是,如果我单击任何已添加的按钮,它们不会添加任何内容。我尝试更改为:

    $(function(){
function update(){
$('button').each(function(i){
$(this).click(function(){
$(this).after('<br /><button type="button">Button</button>');
update();
});
});
};
update();
});

但是这会选择第一个按钮两次,所以如果我按一次它就会起作用,它添加的按钮也会起作用,但如果我第二次按第一个按钮,它会添加 2 个以上的按钮,然后再添加 4 个按钮,等等。

最佳答案

使用事件委托(delegate)来管理点击事件。

$('body').delegate('button','click',function() {
$(this).after('<br /><button type="button">Button</button>');
});

这使用 delegate() [docs]方法来处理 <body> 中发生的所有点击并对匹配 'button' 的元素执行选择器。

尝试一下: http://jsfiddle.net/Krrae/

如果所有按钮都位于公共(public)容器中(<body> 除外),则将其用于委托(delegate):

$('#some_button_container').delegate('button','click',function() {
$(this).after('<br /><button type="button">Button</button>');
});

关于javascript - 将元素添加到 DOM 后,它不会运行相同的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6511326/

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