如何在jQuery中将一个函数内的变量传递到另一个函数
解决变量跨函数访问问题
你当前的问题是:livraison是第一个点击事件处理函数的局部变量,作用域仅限该函数内部,所以第二个keyup事件的函数无法访问到它。下面是几种可行的解决方法:
方法一:提升变量作用域到外层
将变量声明在所有函数外部,让两个函数都能访问到:
let livraison; $('input[name="choix_livraison"]').on('click', function() { livraison = $(this).attr('data-nom'); console.log("verification si variable passe", livraison); }); $("#cb_Nom").keyup(function() { console.log("verification si variable passe", livraison); });
注意:如果你的代码在模块环境中,建议将变量放在两个函数共同的父作用域下,避免直接使用顶级全局变量。
方法二:用元素存储变量(推荐)
借助jQuery的data()方法,把变量值绑定到元素上,避免全局变量污染:
$('input[name="choix_livraison"]').on('click', function() { const livraison = $(this).attr('data-nom'); // 将值存储到目标输入框的data属性中 $("#cb_Nom").data('livraison', livraison); console.log("verification si variable passe", livraison); }); $("#cb_Nom").keyup(function() { // 从元素的data中取出存储的值 const livraison = $(this).data('livraison'); console.log("verification si variable passe", livraison); });
方法三:闭包封装私有作用域
通过自执行函数创建私有作用域,既能共享变量,又不会污染全局命名空间:
(function() { let livraison; $('input[name="choix_livraison"]').on('click', function() { livraison = $(this).attr('data-nom'); console.log("verification si variable passe", livraison); }); $("#cb_Nom").keyup(function() { console.log("verification si variable passe", livraison); }); })();
内容的提问来源于stack exchange,提问作者jules
相关产品推荐
相关产品推荐

