Javascript 内容准备好后如何触发点击?

Javascript 内容准备好后如何触发点击?,javascript,jquery,Javascript,Jquery,我想按一下按钮。但问题是,单击事件总是在按钮加载之前触发 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> $(文档).ready(函数(){ $('.custom_按钮')。单击(函数(){ 警报(“显示”); }); $('.custom_按钮')。单击(); $('body')。追加('abc'); }); 移动$('body')

我想按一下按钮。但问题是,单击事件总是在按钮加载之前触发

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

$(文档).ready(函数(){
$('.custom_按钮')。单击(函数(){
警报(“显示”);
});
$('.custom_按钮')。单击();
$('body')。追加('abc');
});
移动
$('body')。追加('abc')行到顶部
$(文档)。准备好后它将工作

代码的问题在于,在实际创建该元素之前,您正在分配
单击事件并触发它。所以它不会起作用。
$(文档).ready(函数(){
$('body')。追加('abc');
$('.custom_按钮')。单击(函数(){
警报(“显示”);
});
$('.custom_按钮')。单击();
});

添加
单击
事件并在
$('.custom_按钮')内调用它。准备好
。您可以在创建
单击
事件后在
单击后调用该函数

$(文档).ready(函数(){
$('.custom_按钮').ready(函数(){
$(此)。单击(函数(){
警报(“显示”);
});
$(此选项)。单击();
})
$('body')。追加('abc');
});

定义第一个按钮生成代码,然后定义单击事件

  $(document).ready(function(){
      $('body').append('<button class="custom_button">abc</button>');
          $('.custom_button').click(function(){
            alert('show');
          });
          $('.custom_button').click();

        });
$(文档).ready(函数(){
$('body')。追加('abc');
$('.custom_按钮')。单击(函数(){
警报(“显示”);
});
$('.custom_按钮')。单击();
});

您可以创建函数并从中返回承诺。承诺内解决方法 创建按钮,完成后,使用触发
单击

您还需要使用
on

函数addButton(){
返回新承诺(功能(解决、拒绝){
解析($('body')。追加('abc');
})
}
$('body')。在('click','custom_按钮',function()上{
警报($(this.text());
});
addButton()。然后(函数(d){
$('.custom_按钮')。触发器('单击')
})

您也可以尝试此方法

$(文档).ready(函数(){
$('body')。在('click','custom_按钮',function()上{
console.log('show');
});
$('body').append('abc').ready(函数(){
$('.custom_按钮')。单击();
});
});

您只需将html代码放在任何jquery代码加载之前。只要DOM在调用触发器函数之前准备好html内容

$(文档).ready(函数(){
$('body')。追加('abc');
$('.custom_按钮')。单击(函数(){
警报(“显示”);
});
$('.custom_按钮')。单击();
});

宽宏大量地说,这听起来像是一个问题:为什么要在页面加载时单击按钮,而不是调用与单击绑定的任何函数?在添加按钮之前,您要单击按钮并附加事件。您的操作顺序已准备就绪。将事件处理程序绑定到X,单击X,创建元素X并将其添加到页面这就像在做三明治之前先吃三明治一样。@msnford我无法描述我真正的问题,这里很复杂,但我做了一个简单的例子,与我的问题类似。从答案的评论来看,似乎你不想改变事情的顺序。也就是说,您希望在某个元素存在之前触发该元素上的单击事件。。。你不能从评论中做到这一点,特别是“我做了一个简单的案例”评论——这不是你的实际情况,我认为简化它隐藏了问题。当DOM被更改时,您似乎正在寻找触发代码——您可能可以使用变异观察者:我需要在不更改代码顺序的情况下执行此操作,因此单击将始终在按钮被更改之前运行ready@Myrealname简单地说,我可以说这是不可能的。如果元素尚未追加,您的单击事件将不会触发。是的,我知道,但我必须这样做。哈哈,我在这里之前已经尝试过了,但这似乎不是一个好的解决方案。我需要在不更改代码顺序的情况下执行此操作,因此单击将始终在按钮准备就绪之前运行。我需要在不更改代码顺序的情况下执行此操作,因此,在按钮准备就绪之前,单击将始终运行