<a> tag only working on double click and not single click

时间:2015-08-26 09:30:29

标签: javascript

Hi I have a <a> tag that is working on double click but not on single click. I have a javascript function called on the tag.

Can someone help on same.

Below is the tag and the javascript function

function ShowPopup() { 
    $("#lnkAttachment").on("click", function () {
        $('#divProjectAttachment').modal('toggle');
    });
}

<a>href="javascript:void(0);" id="lnkAttachment" onclick="ShowPopup();">Click here to View Attachments!</a>

1 个答案:

答案 0 :(得分:4)

您在ShowPopup函数中附加了事件侦听器。只需将其更新为

即可
function ShowPopup() { 
    $('#divProjectAttachment').modal('toggle');
}

它会正常工作。

编辑:

为什么会这样?

嗯,首先,这适用于第二次点击,而不是double click

接下来,

您已在onclick标记中附加了<a></a>个事件处理程序。哪个触发ShowPopup功能。 在ShowPopup函数中,您可以将click事件侦听器附加到同一元素。 因此,当您第一次单击锚标记时,ShowPopup会将事件监听器附加到#lnkAttachment。这里要注意的一件重要事情是,首次单击时会调用ShowPopup函数。但它不会向您显示弹出窗口,因为您将事件监听器附加到元素上并且就是这样。现在,在第一次调用ShowPopup之后附加了事件监听器。 下次单击lnkAttachment时,事件监听器已经存在,因此它将显示弹出窗口。此外,它将再次重新附加click事件侦听器(每次调用ShowPopup时都是如此 - 这是不必要的)。

您可以按照此答案演示

来保留您的代码

OR

您可以决定遵循良好的编程理念,并从显示标记(HTML)中分离事件附件(JavaScript) 这样做的方法如下。

将您的锚标记保留为

HREF =&#34;的javascript:无效(0);&#34; id =&#34; lnkAttachment&#34;&gt;点击此处查看附件!

(注意,这里没有onclick事件处理程序)

并在您的javascript中处理事件处理。

$(document).on('ready', function(){
    $("#lnkAttachment").on("click", function () {
        $('#divProjectAttachment').modal('toggle');
    });
}