gpt4 book ai didi

javascript - 在不使用 unbind/removeAttr 的另一个函数中更新 onclick 函数

转载 作者:行者123 更新时间:2023-11-29 22:31:22 24 4
gpt4 key购买 nike

阅读解决方案的最终编辑

我正在尝试使用 jquery 更新链接的 onclick 函数。

最好举例说明:

html

<a href='' id='one_click' onclick='do_things_here("fighter","bitter",2)'>first clicker</a>

<a href='' id='two_click' onclick='do_things_here("abc","xyz",1)'>second clicker</a>

js(类似这样的东西 - 我不认为这在逻辑上是正确的)

function do_thing_here(data, info, source){

*//things happen here*

$('#two_click').click(function() {
do_things_here(data,info,source)
return false;

});


}

这不起作用,因为它进入递归循环,因为在重置“two_click”上的 onclick 时 do_things_here 被触发。

编辑

我尝试设置一个重置标志以防止 do_things_here 在重新设置 onclick 时运行

function do_thing_here(data, info, source,reset){
if (reset){
return false;
}


*//things happen here*

$('#two_click').click(function() {
do_things_here(data,info,source,true)
return false;

});


}

但这似乎有点 hack-ish,我认为它没有用,我仍然有问题 - 我会尝试再做一次,看看问题在哪里。

我已经尝试解除绑定(bind)和 removeAttr/attr 以尝试按照此处的说明重新分配

JavaScript: changing the value of onclick with or without jQuery

这些方法似乎并不适用于所有浏览器

  • Using jQuery attr("onclick", js) doesn't work with both Firefox and IE6/7.
  • Using setAttribute("onclick", js) works with Firefox and IE8, but not IE6/7.
  • Using onclick = function() { return eval(js); } doesn't work because you are not allowed to use return is code passed to eval().

我已经尝试清除 html 中的 onclick 函数,因此没有任何设置为默认值,但这没有任何效果。

我可以简单地重置/重新调整链接如下

<span id='change_two'><a href='' id='two_click' onclick='do_things_here("abc","xyz",1)'>second clicker</a></span>

然后

 function do_thing_here(data, info, source){

*//things happen here*

$('#change_two').html("<a href='' id='two_click' onclick='do_things_here('+data+','+info+','+soutce+')'>second clicker</a>");


}

或类似的东西,但我想知道是否有更好更清洁的方法来做到这一点?

----edit:solution explained----

仅适用于使用谷歌搜索此页面的用户:

如果你通过 html 设置 onclick 你需要 removeAttr ($(this).removeAttr('onclick'))

如果您通过 jquery 设置它(如我上面示例中的第一次点击后),那么您需要取消绑定(bind) ($(this).unbind('click'))

然后你只需重新绑定(bind) bind ($(this).bind('click',function(event){//代码/函数调用})))

//重要 - removeAttr:使用“onclick”和解除绑定(bind):使用“click” - 我认为这是我的主要问题!

不确定我是否应该将此作为答案发布,因为解决方案就在我的问题中!抱歉脑残。

我知道在问题中它指出“不使用 unbind/removeAttr” - 那是因为我认为它不适用于这些功能 - 但那只是因为使用了不同的功能。

最佳答案

不确定您要实现的目标,但要取消绑定(bind)点击事件,只需使用 $(this).unbind('click')

关于javascript - 在不使用 unbind/removeAttr 的另一个函数中更新 onclick 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6774527/

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