.click之后jQuery没有传递变量

Posted

技术标签:

【中文标题】.click之后jQuery没有传递变量【英文标题】:jQuery not passing variable after .click 【发布时间】:2011-05-18 20:50:35 【问题描述】:

所以我运行了一个简单的 jQuery 脚本。它有2个按钮,1个发送数据,1个按钮需要设置第一个发送的变量之一的值。

好的,这是按钮 1 的脚本(称为预览):

$('#execute').click(function() 
$('#currentImage').remove();

$.ajax(
   type: "POST",
   url: "effect.php",
   data:  action: $("[name='action']:checked").val(), source: sourceImage, destination: destinationImage, variables: $('#variables').val() ,
   success: function(msg)
     $('#workspace').html(msg);
     $("#preview").attr("src", destinationImage+"?timestamp=" + new Date().getTime());
   
 ); );

它的作用是对图像产生影响,这一切都非常有效。 javascript 的第一行之一包含“sourceImage”变量。

var sourceImage = '20101201161609.jpg';

该变量已正确传递给上面的脚本。 第二个按钮(称为保存状态)确保我对图像效果感到满意的按钮保存图像的状态,并继续对该图像进行效果。这意味着需要更改源图像,我使用以下脚本:

$('#save_state').click( function() 
var sourceImage = '2010-12-02-35-20-preview.png';
$('#header').html(sourceImage); );

我留下$('#header').html(sourceImage);这行来检查它是否确实被触发了,确实是这样,所以这行不是必需的,但我确定动作被触发了。

但是,我再次点击“预览”,将变量 sourceImage 的值更改回它开始时的值,而它实际上需要保留这个新值。

希望有人可以帮助我。

【问题讨论】:

【参考方案1】:

通过使用var 关键字,您可以在函数中声明一个局部变量,该变量与同名的全局变量是分开的。去掉var关键字来访问全局变量:

$('#save_state').click( function() 
  sourceImage = '2010-12-02-35-20-preview.png';
  $('#header').html(sourceImage);
);

【讨论】:

【参考方案2】:

第二个函数中的sourceImage 变量在函数的本地范围内,并不引用同一个变量。我认为您只需删除 var 关键字即可使其按照您想要的方式工作。话虽如此,您应该非常小心使用全局范围的变量。通常,您希望尽可能缩小变量的范围。您可能希望使用 data 函数将此值存储在 DOM 中,但如果不进一步了解您正在尝试做什么,就很难知道。

【讨论】:

【参考方案3】:

这里...

$('#save_state').click( function() 
var sourceImage = '2010-12-02-35-20-preview.png';
$('#header').html(sourceImage); );

...您完全没有做任何事情,因为您正在设置 local(如var 所示)变量 sourceImage 立即超出范围。全局(窗口)变量 sourceImage 保持不变。

【讨论】:

以上是关于.click之后jQuery没有传递变量的主要内容,如果未能解决你的问题,请参考以下文章

如何将变量从 jQuery 传递到 AngularJs 函数

Php没有通过$ _POST接收变量

jquery click函数声明在运行时评估变量

使用 jquery 将模板变量传递给 django url

通过单击按钮传递变量[重复]

js中的回调函数