Jquery 单击父对象,然后单击子对象上的事件

Jquery 单击父对象,然后单击子对象上的事件,jquery,Jquery,当我单击.letitre时,我想模拟在子元素.mybutton中的单击 HTML: 是的,我试过了,但不起作用(根本没有点击) 您需要找到按钮并单击它,如果您委派一个按钮,则需要同时委派这两个按钮 此外,必须停止传播,否则将循环 $(函数(){ $(document).on(“click”,“.letitre”,function()){ $(this.find(“.mybutton”)。单击(); }); $(文档)。在(“单击”,“我的按钮”,函数(e){ e、 stopPropagatio

当我单击.letitre时,我想模拟在子元素.mybutton中的单击

HTML:

是的,我试过了,但不起作用(根本没有点击)


您需要找到按钮并单击它,如果您委派一个按钮,则需要同时委派这两个按钮

此外,必须停止传播,否则将循环

$(函数(){
$(document).on(“click”,“.letitre”,function()){
$(this.find(“.mybutton”)。单击();
});
$(文档)。在(“单击”,“我的按钮”,函数(e){
e、 stopPropagation();//确保单击停止在此处
console.log($(this.text())
});
});

按钮
按钮2

您需要找到按钮并单击它,如果您委派一个按钮,则需要同时委派两个按钮

此外,必须停止传播,否则将循环

$(函数(){
$(document).on(“click”,“.letitre”,function()){
$(this.find(“.mybutton”)。单击();
});
$(文档)。在(“单击”,“我的按钮”,函数(e){
e、 stopPropagation();//确保单击停止在此处
console.log($(this.text())
});
});

按钮
按钮2

这是另一个不用jQuery也同样容易解决的问题:

document.addEventListener('click',({target})=>{
if(target.matches('.letitre')){
target.childNodes[1]。单击();
log(“单击的子项:”);
}
//正如你所见,我的按钮被点击了
if(target.matches('.mybutton')){
log(“.mybutton收到了点击!”);
}
})
.mybutton{color:#a00;}
外部
按钮
外面
按钮

这是另一个不用jQuery也同样容易解决的问题:

document.addEventListener('click',({target})=>{
if(target.matches('.letitre')){
target.childNodes[1]。单击();
log(“单击的子项:”);
}
//正如你所见,我的按钮被点击了
if(target.matches('.mybutton')){
log(“.mybutton收到了点击!”);
}
})
.mybutton{color:#a00;}
外部
按钮
外面
按钮

按钮
已经是jQuery对象,无需再次包装。
按钮
已经是jQuery对象,无需再次包装。谢谢,它正在工作,只是不要忘记。对于mybutton(find)@Youstart-我必须使用香草Javascript添加一个stoppropagation,没有循环问题,请参阅我的答案。如果正确检查事件目标,单击div.mybutton
将不会触发侦听器。@connexo-这不太可能。我确信jQuery一次只编码一个元素,而且我确信按钮在其他地方会有自己的事件处理程序。谢谢,它正在工作,只是别忘了。对于mybutton(find)@Youstart-我必须使用香草Javascript添加一个stoppropagation,没有循环问题,请参阅我的答案。如果正确检查事件目标,单击div.mybutton
将不会触发侦听器。@connexo-这不太可能。我确信jQuery一次只编码一个元素,而且我确信按钮在其他地方会有自己的事件处理程序,而不是letitrean,为什么没有循环?我将此添加到了您的:
document.queryselectoral(.mybutton”).forEach(但是=>but.addEventListener(“单击”,function(){console.log(this.textContent)}))
为什么没有循环?我将此添加到您的中:
document.queryselectoral(.mybutton”).forEach(but=>but.addEventListener(“单击”,function(){console.log(this.textContent)}))
<div class="letitre">
    <div class="mybutton">Button</div>
</div>
<div class="letitre">
    <div class="mybutton">Button</div>
</div>
$(function(){
    $("body").on("click", ".letitre",function(){
        $(".mybutton").click();
    });
});
$(function(){
    $("body").on("click", ".letitre",function(){
        var button = $(this).find(".mybutton");
        $(button).click();
    });
});