重写javascript单击事件一次

重写javascript单击事件一次,javascript,jquery,html,Javascript,Jquery,Html,我想替换网页中所有锚的点击事件的默认操作。 当我使用这段代码时: <html> <head> <script> var list=document.getElementsByTagName("a"); var isChecked = false; function load () { for (i=0; i<list.length; i++) { var old = (list[i].onclick)

我想替换网页中所有锚的点击事件的默认操作。 当我使用这段代码时:

<html> <head> <script>     
var list=document.getElementsByTagName("a");
var isChecked = false;

function load () {    
    for (i=0; i<list.length; i++)
    {
        var old = (list[i].onclick) ? list[i].onclick : function () {}; 
        list[i].onclick = function () {                 
        if( !isChecked)
        {
            test(); 
            old();
        }
        else
            old();
        };  
    }
}    
function test() {
    alert("new action");
    isChecked = true;
}     
</script> </head> 
<body onload="load();">     
<a id="nr_1" onClick="alert('test');"> Anchor 1 </A>
<a id="nr_2" onClick="alert('test2');"> Anchor 2 </A>      
</body> </html>

加载页面时,调用此函数,为所有锚元素提供一个“disabled”属性。单击元素后,e.preventDefault()函数将禁用内联onclick函数。然后我删除“disabled”属性并再次调用元素的click函数。因为现在元素没有“disabled”属性,所以只执行默认函数。我仍然对这个问题的“更优雅”的解决方案持开放态度,但现在我是一个快乐的露营者

如果使用jQuery,则可以将一次性处理程序与持久性处理程序结合使用:

和的文件

工作示例:

示例HTML:

<input type="button" id="click" value="click" />

试试这个:onClick=“alert('test”);return false;“它应该会停止链接导航,从而停留在同一页面上,并将变量值作为旁注,我不确定jQuery将如何对这两个事件排序。如果订单很重要,您可能需要对此进行调查。相关问题-有关其他信息,我无法编辑HTML代码,并且锚标记有一个现有的onclick函数(作为内联属性),然后只使用.one()处理程序。
<input type="button" id="click" value="click" />
button.one('click', function () {
  console.log('one time function fired');  
});

button.on('click', function () {
  console.log('persistent function fired');  
});