提问人:user260157 提问时间:12/2/2010 最后编辑:Matuser260157 更新时间:11/7/2011 访问量:458
jQuery 在 .click 后不传递变量
jQuery not passing variable after .click
问:
所以我有一个简单的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的值更改回它开始的值,而它实际上需要保留这个新值。
也许有人可以帮助我。
答:
通过使用关键字,您可以在函数中声明一个局部变量,该变量与同名的全局变量是分开的。删除关键字以访问全局变量:var
var
$('#save_state').click( function() {
sourceImage = '2010-12-02-35-20-preview.png';
$('#header').html(sourceImage);
});
第二个函数中的变量作用域为函数的本地范围,并且不引用同一变量。我认为您可以通过简单地删除关键字来使其按照您想要的方式工作。话虽如此,使用全局范围的变量时应非常小心。通常,您希望尽可能缩小变量的范围。您可能希望使用该函数将此值存储在 DOM 中,尽管如果不更多地了解您要执行的操作,则很难知道。sourceImage
var
data
这里。。。
$('#save_state').click( function() {
var sourceImage = '2010-12-02-35-20-preview.png';
$('#header').html(sourceImage); });
...您绝对没有做任何事情,因为您正在设置本地(如所示)变量 sourceImage,该变量会立即超出范围。全局(窗口)变量 sourceImage 保持不变。var
上一个:了解变量的传递方式
评论