jQuery全局变量



谁能告诉我为什么这不起作用:

$(function() { 
   var damg = $(".hidden").val();
    $("button").click(function() {
        alert(damg);
    });
});

jsFiddle: http://jsfiddle.net/raFnT/

使用全局变量好吗?我也读到,这是一个慢的选择比每次输入?

详细说明:

我有这个:

$("button").click(function() {
            alert(damg);
        });

,其中损害为输入的一个值:var damg = $(".hidden").val();

当你在输入中输入一些东西,然后按下按钮,提醒输入的值

我可以用

$("button").click(function() {
var damg = $(".hidden").val();
                alert(damg);
            });

但是在某一点上,我将有100个函数,我将以这样的方式结束:

$("button1").click(function() {
    var damg = $(".hidden").val();
                    alert(damg);
                });
$("button2").click(function() {
    var damg = $(".hidden").val();
                    alert(damg);
                });
$("button3").click(function() {
    var damg = $(".hidden").val();
                    alert(damg);
                });
$("button4").click(function() {
    var damg = $(".hidden").val();
                    alert(damg);
                });
$("button5").click(function() {
    var damg = $(".hidden").val();
                    alert(damg);
                });

我想设置一个全局变量,这样在每个函数上我都不需要再次调用该函数。

像这样:

var damg = $(".hidden").val();
$("button1").click(function() {
        alert(damg);
    });
$("button2").click(function() {
        alert(damg);
    });
$("button3").click(function() {
        alert(damg);
    });
$("button").click(function() {
        alert(damg);
    });
$("button4").click(function() {
        alert(damg);
    });
$("button5").click(function() {
        alert(damg);
    });

你搞反了,全局变量必须写在函数的外部。

你的代码不能工作,因为。hidden没有值。

http://jsfiddle.net/raFnT/2/

除非你真的需要全局变量,否则使用全局变量是不好的做法。我不知道你说的"每次都打"是什么意思。'

同时,您没有在click处理程序中重新加载该值。

$(function() {            
    $("button").click(function() {
        var damg = $(".hidden").val();
        alert(damg);
    });            
});
http://jsfiddle.net/raFnT/6/

为了得到一个好的答案,OP想要的是blur函数。

$(function() {     
    var damg;
    $(".hidden").blur(function () {
        damg = $(".hidden").val();
    });
    $("button").click(function() {
        alert(damg);
    });            
});
http://jsfiddle.net/raFnT/7/

您的示例正在工作。问题是你正在文件准备上设置damg。在"文档就绪"状态下,文本框中没有值。如果你指定一个默认值,它会在按钮点击时提醒该值。您可以在下面的页面中看到这一点:http://jsfiddle.net/raFnT/1/

如果您想更改每个按钮上的damg的值,请将代码更改为:

var damg;
$("button").click(function() {
    damg = $(".hidden").val();
    alert(damg);
});

在函数第一次执行时立即设置damg变量—您需要在click函数本身中设置该变量,以便它当时从字段中获取值。

不知道为什么这个被否决了-这是你所要求的:

$(function() { 
   var damg = $(".hidden").val();
    $("button").click(function() {
        damg = $(".hidden").val();
        alert(damg);
    });
});

或者更简单:

$(function() { 
    $("button").click(function() {
        alert( $(".hidden").val(); );
    });
});

我想补充一下,这是一个相同的解决方案,但使用了一个更改函数来监视更改。

JS

var damg;
$('#contact-name').on('change', function(){
    damg = $(".hidden").val();
});

这不是一个全局变量。这是一个作用域为匿名函数的变量,你传递给jQuery的ready处理程序。

不工作的原因(我认为不工作的意思是它警告一个空字符串)是因为在DOM加载时分配了damg。此时,文本框没有值。所以它实际上是有效的。如果你想在点击按钮时得到文本框的值,你需要在点击处理程序中获取它的值。

可以缓存DOM查找,方法如下:

$(function() {
    var damg = $(".hidden");
    $("#one").click(function() {
        alert("button one: " + damg.val());
    });
    $("#two").click(function() {
        alert("button two: " + damg.val());
    });
});
<input type="text" class="hidden" placeholder="Type text here">
<button id="one">Click me(1)!</button>
<button id="two">Click me(2)!</button>

相关内容

  • 没有找到相关文章

最新更新