首页 > 解决方案 > 检查单击触发事件是否来自按钮 a 或 b

问题描述

我有以下 HTML 情况,这是一个示例,ID 和类不同:

<div id="form-popup">
    <form id="a" class="hide"></form>
    <form id="b" class="hide"></form>
<div>

<button id="btn-a">Trigger Form A</button>
<button id="btn-b">Trigger Form B</button>

上述情况是当按钮#btn-a被触发时#form-popup会出现。这种情况无法改变,因此(我认为)我需要在单击#btn-a时触发#btn-b

$('#btn-b').click(function(){
    $('#btn-a').trigger('click');
});

我想做的是同时隐藏链接的表单。所以隐藏形式#awith#btn-b和 form #bwith #btn-a。我尝试了一些 jQuery 解决方案,但由于#btn-a具有双重功能,我进入了一个循环;触发#form-popup并隐藏某种形式。

我正在考虑放置一个 if 语句来定义点击事件的来源,但我不确定如何?或者也许有更好的解决方案?

所以下面的情况会导致明显的循环:

$('#btn-a').click(function(){
    $('#a').removeClass('hide');
    $('#b).addClass('hide');
});
$('#btn-b').click(function(){
    $('#a').addClass('hide');
    $('#b').removeClass('hide');
    $('#a').trigger('click');
});

标签: jquerytriggers

解决方案


$("#btn-a, #btn-b").click(function(e){
if(e.currentTarget.id == 'btn-a')
{
    $("form#a").removeClass('hide');
    $("form#b").addClass('hide');

}
else
{
    $("form#b").removeClass('hide');
    $("form#a").addClass('hide');
}
});

推荐阅读