gpt4 book ai didi

javascript - 调用 onclick 覆盖的函数不起作用

转载 作者:行者123 更新时间:2023-11-30 20:41:26 26 4
gpt4 key购买 nike

我现在对某些代码有困难。我试图查看 Internet 和其他 StackOverflow,但似乎没有一个适合我...

我有一个函数(在不属于我的代码中定义并且我无法手动更改)我试图正确覆盖。对于某个按钮的每次单击,它应该调用新的覆盖函数,但它不起作用。它总是调用它的第一个版本。

事实上,不幸的是我不能改变下面代码的顺序。

<script>
$('button').click(select_options);

function select_options(){
// some TO DO here
}
</script>

在另一个我可以更改的文件中,我做了:

<script>
window.select_options = function() {
// I redefine the function here as what I want
}
</script>

当我点击一个按钮时,它会调用函数“select_options”的第一个定义。我怎样才能正确修复和覆盖用户单击按钮时将调用的函数?

最佳答案

您需要取消绑定(bind)这个特定的事件处理程序并重新绑定(bind)新的。您当然需要小心,不要删除其他处理程序。例如,您应该这样做:

$('button').off('click', select_options).on('click', function () {
console.log('B')
})

这是它如何保留其他处理程序的演示:

$('button').click(select_options).click(function () {
console.log('other handler')
})

function select_options() {
console.log('A')

// Remove original select_options and bind version B
$('button').off('click', select_options).on('click', function () {
console.log('B')
})
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<button>Test</button>

关于javascript - 调用 onclick 覆盖的函数不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49211429/

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