You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 01:36:30