【问题标题】:Global variable change on dynamic objects动态对象上的全局变量更改
【发布时间】:2014-01-05 16:43:36
【问题描述】:

我想更改一个全局变量来对全局变量进行检查:

如您所见,我希望 check_short_desc 成为下拉菜单操作的触发器。
这不起作用。

$(document).ready(function () {
    var check_short_desc = 0;
    $("#shortdesc").keyup(function () {
        dd_shortdesc = $("#dd_shortdesc");
        $("#dd_shortdesc").css("width", $(this).width());
        thisval = $(this).val().replace("<BR>", "");
        if (thisval.length < 1) {
            $("#dd_shortdesc").fadeOut(180);
        } else {
            $("#dd_shortdesc").fadeIn(180);
        }
        if (check_short_desc == 0) {
            $.get("go_dd.php?action=getsmalldesc&text=" + thisval)
                .done(function (data) {
                    dd_shortdesc.html(data);
                });
        }
    });
    $("body").on("click", ".smalldescli", function () {
        $("#shortdesc").val($(this).text());
        $("#dd_shortdesc").fadeOut();
        check_short_desc = 1;
    });
});

我们将不胜感激。

【问题讨论】:

  • 预期结果是什么?你得到什么结果?
  • 无论如何,变量都保持“0”。一旦用户单击“.smalldescli”类,我希望它更改为“1”。

标签: jquery ajax variables get global


【解决方案1】:

check_short_desc 不是代码中的全局变量。要使其可供点击处理程序访问,您需要在 document.ready 函数之外声明它。

关于 JavaScript 变量作用域的一些有用信息可以在这里找到:http://learn.jquery.com/javascript-101/scope/

【讨论】:

  • 哎呀,但点击处理程序的声明范围与 check_short_desc 相同,所以应该不是问题
  • @A.Wolff,你说得对!当我第一次看时,我认为它不在同一个范围内。 Nir,您确定这解决了您的问题吗?
  • 嗯,它有很大帮助,但我是问题所在。一切都很好,我的坏了。
最近更新 更多