.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没有传递变量的主要内容,如果未能解决你的问题,请参考以下文章