属性onclick自动触发点击事件

时间:2019-07-18 11:11:21

标签: javascript jquery html

当我使用jquery设置onclick属性时,该方法被调用。仅当我使用Tab键触发链接时,才会发生这种情况。当我单击链接时,不会发生任何问题。这是已知的错误吗?请在下面找到代码段。但是,我无法在其中重现该问题,并且我的代码完全相同。

仅供参考,我正在使用jquery 3.1.1。

function setDeleteLogo() {
  $('#deleteLogoBtn').attr('onclick', $('#confirmLink').attr('data-onclick'));
}

function deleteLogo() {
  alert();
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<a id="confirmLink" onclick="setDeleteLogo()" href="javascript:;" data-onclick="deleteLogo()">Confirm</a>

<button id="deleteLogoBtn">Yes, Delete</button>

2 个答案:

答案 0 :(得分:0)

.attr用于启用/禁用特定元素的属性。 例如     ('#button')。attr('disabled','disabled'),其中第一个参数是属性名称,第二个参数是我们要设置的值。 请尝试使用     yourElement.click(function(){      ....     })

答案 1 :(得分:0)

我对您的示例做了一些修改:

  • 该按钮会收到一个点击处理程序,该处理程序将确定调用的内容。
  • 确认链接在首次访问时会收到点击处理程序。
  • 此链接的点击处理程序会触发按钮上的点击事件。
  • 该链接包含一个数据属性(data-confirmed),该属性的存在指示已被访问。

您可能希望其他逻辑具有动态呼叫目标而不是硬编码的deleteLogo,并重置确认链接的状态。

function setDeleteLogo() {
    if (!$('#confirmLink').attr('data-confirmed')) {
        $('#confirmLink').on('click', () => { $("#deleteLogoBtn").trigger("click"); 1; });
        $('#confirmLink').attr('data-confirmed', '1');
    }
}

function deleteLogo() {
  alert();
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<a id="confirmLink" onclick="setDeleteLogo()" href="javascript:;">Confirm</a>

<button id="deleteLogoBtn" onclick="deleteLogo()" data-onclick="deleteLogo()">Yes, Delete</button>