jref属性中jQuery代码的奇怪行为

时间:2017-02-23 09:02:13

标签: javascript jquery html href

我看到它可能会在html href标记的a属性中放置jquery代码。

然而,该代码有效,所以我不明白:它在第二次点击后起作用。 为什么呢?



<a href="javascript:alert('ok JavaScript')">JS</a>
<br>
<script src="https://code.jquery.com/jquery-latest.min.js"></script>
<a id="myId" href='javascript:
  $(document).ready(function(){
    $("#myId").click(function() {
      alert("ok jQuery");
    });
  });'>jQ</a>
&#13;
&#13;
&#13;

3 个答案:

答案 0 :(得分:2)

在第一次单击时,href属性中的函数被执行,处理程序被绑定到'myId'锚元素。在第二次单击处理程序中执行并显示警告。

答案 1 :(得分:1)

这种行为没什么奇怪的。
开头没有jQuery click处理程序绑定到您的链接。

但是,当您第一次单击它时,它会从href执行以下脚本:

$(document).ready(function() { 
  $("#myId").click(function() {
    alert("ok jQuery");
  });
});

并将处理程序绑定到您的链接。 因此,在第一次点击后您没有alert,但现在您的click处理程序绑定了#myId

当您第二次单击它时,它会触发新的绑定jQuery事件,该事件显示警报 此外,它再次执行href,因此当您再次单击此链接时,您将获得两个(相同的)点击处理程序和两个警报,并且每次都会增加警报数。

答案 2 :(得分:1)

第一次单击定义单击事件以显示警告框。

第二次点击执行代码并显示警告框。

作为评论,您不应该将此代码包含在href属性中,因为这是一种不好的做法。