gpt4 book ai didi

javascript - 传递变量时加载时执行的 jQuery 函数

转载 作者:行者123 更新时间:2023-11-28 15:00:57 24 4
gpt4 key购买 nike

我试图弄清楚如何将变量传递给 jQuery 函数,但我不知道为什么这个(大大简化的)示例不能按预期工作。这个想法是,当单击该复选框时将显示警报。

这里没问题:

<input type="checkbox" class="check"/>

<script>

do_alert = function() {
alert("Welcome");
}

$('.check').change(do_alert);

</script>

但是,当将警报文本传递给函数时,页面加载后就会立即显示警报,并显示正确的消息文本:

<input type="checkbox" class="check"/>

<script>

do_alert = function(message) {
alert(message);
}

$('.check').change(do_alert("Welcome"));

</script>

就像这样:

<input type="checkbox" class="check"/>

<script>

function do_alert(message) {
alert(message);
}

$('.check').change(do_alert("Welcome"));

</script>

在这两种情况下,该函数不会在选中该框时执行,而是在加载页面时执行。我在这里缺少什么?

最佳答案

$('.check').change(do_alert); 起作用的原因是您将对 do_alert 函数的引用传递给 更改 事件处理程序,并且该事件处理程序在需要时执行do_alert()$('.check').change(do_alert("Welcome")); 不起作用的原因是您正在执行 do_alert 函数而不是传递它作为当时情况的引用。为了传递参数,您需要将函数调用包装在匿名函数中,如下所示:

$('.check').change(function(){
do_alert("Welcome");
});

发生的情况是,您正在创建一个匿名函数 (function() { ... }),但您没有执行它(因为函数定义后没有括号)。因此,您正在传递对匿名函数的引用,这正是您的事件处理程序所期望的。

关于javascript - 传递变量时加载时执行的 jQuery 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40972970/

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