gpt4 book ai didi

javascript - 覆盖 javascript 点击事件一次

转载 作者:行者123 更新时间:2023-12-02 19:30:34 25 4
gpt4 key购买 nike

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

<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>

当我单击一个 anchor 时,我会从测试函数中获取警报,然后从第二个 anchor 的默认函数中获取警报(即使当我单击第一个 anchor 时)。当我再次单击两个 anchor 之一时,我总是会从第二个 anchor 收到警报。如何为每个 anchor 元素放回原来的 onclick 函数?当有人在 jquery 中有解决方案时,我也会很高兴。

编辑

我成功地使用了这段代码:

function load()
{
$('a').attr('disabled', 'disabled');

$('a').click(function(e){
if($(this).attr('disabled'))
{
alert("new");
e.preventDefault();
$('a').removeAttr("disabled");
this.click();
}
});
}

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

最佳答案

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

.one() 的文档和 .on()

工作示例:http://jsfiddle.net/Q8gmN/

示例 HTML:

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

​JavaScript 示例:

button.one('click', function () {
console.log('one time function fired');
});

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

关于javascript - 覆盖 javascript 点击事件一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11542162/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com