2017-02-23 110 views
1

我看到它在HTML a标签的href属性可能的地方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>

+3

尽管可以在'href'中添加JS代码,您*真的,真的*不应该 –

+0

@Rory,我需要一个只能使用我的小书签... –

+0

当dom准备好执行js代码。在你的代码中,你点击并手动执行你的JavaScript,所以首先它调用文档就绪函数,等待myId点击函数调用。 –

回答

1

没有这种行为奇怪。
在开始时,没有jQuery click处理程序绑定到您的链接。

但是,当你点击它在第一时间,它从href执行下面的脚本:

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

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

当你点击它在第二次时,它触发新的绑定jQuery的事件,这显示了警报。
此外,再次执行href,所以当你再次点击这个链接,你会得到两个(下同)单击处理程序和两个警报,每一次都会递增警报的数目。

1

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

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

正如评论,你不应该包含这些代码到href属性,因为这是一个不好的做法。

2

在第一次点击,在href属性的功能被执行和处理程序被绑定到“MYID”锚定元件。在第二个点击处理程序得到执行并显示警报。