javascript - JQuery 无法从单独的 javascript 文件中找到变量

标签 javascript jquery variables undefined

我正在使用 cakephp 框架,我创建了 2 个单独的 javascript 文件并将它们放入我的 webroot/js 文件夹中。第一个 javascript 文件包含模式对话框变量,其中包含对话框的设置。第二个 javascript 文件包含其他单击事件处理程序,这些处理程序将数据发送到操作,然后打开对话框。

我遇到的问题是第二个文件使用第一个文件调用变量 $variablename 并且我收到一条错误消息,指出 varaibleName 未定义。

下面的一些代码可以向您展示我的意思。 从第一个文件开始:

var $editSel = $("#editSel_dialog").dialog(
{
    autoOpen: false,
    height: 530,
    width: 800,
    resizable: true,
    modal: true,
    buttons:
    {
        "Cancel": function()
        {
            $(this).dialog("close");
        }
    }
});

来自第二个文件:

$('.neweditSel_dialog').live('click', function()
{
    $.ajaxSetup({ async: false });

    var selected = [];

    $("#[id*=LocalClocks]").each(function()
    {
        if(false != $(this).is(':checked'))
        {
            var string = $(this).attr('id').replace('LocalClocks', '');
            string = string.substring(10);
            selected.push(string);
        }
    });

    if(0 === selected.length)
    {
        $selError.dialog('open');
        $selError.text('No Local Clocks Were Selected')
    }
    else
    {
        $.post('/LocalClocks/editSelected', { "data[Session][selected]": selected }, function(data)
        {
        });
        $editSel.load($(this).attr('href'), function ()
        {
            $editSel.dialog('open');
        });
    }
    return false;
});

当我使用 jquery-1.4.2.min.js 时,这是有效的,但我现在使用的是 jquery1.7。 我最终还将第一个文件与所有变量放入 $(document).ready(function(){}); 我尝试将第二个文件放入 document.ready() 函数中但这没有什么区别。

任何帮助都会很棒。 谢谢

最佳答案

您正在处理范围内的问题。在 JavaScript 中:

function foo() {
    var greet = "hi";
}

function bar() {
    console.log(greet); // will throw error
}

但是:

var greet;
function foo() {
    greet = "hi";
}

function bar() {
    console.log(greet); // will log "hi"
}

您必须在需要访问它的两个函数的公共(public)父级中定义变量。不幸的是,由于您没有使用任何建模约定或框架,那就是窗口对象( why are global variables bad? )。

因此,您必须定义 var $whateveryouneed 之前之外 $(document).ready s。

另外,保留declarationdefinition分开。您的定义实例化了一个 jQuery 对象,因此您必须将其封装在 $(document).ready() 中。 (使用 $(function() {}) 代替):

var $editSel;
$(function () {
    $editSel = $("#editSel_dialog").dialog(
    {
        autoOpen: false,
        height: 530,
        width: 800,
        resizable: true,
        modal: true,
        buttons:
        {
            "Cancel": function()
            {
                $(this).dialog("close");
            }
        }
    });
});

关于javascript - JQuery 无法从单独的 javascript 文件中找到变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11541205/

相关文章:

javascript - 如何在 .ajax 调用后更改 UI 元素上的 CSS

javascript - 如何获取不同复选框的值并计算那些选中的复选框的值并显示在输入字段中?

javascript - JS。将事件属性类型分配给变量

Javascript:返回 NAN 的实例方法

javascript - Jquery - 大量链接按钮到相关的 div

javascript - 参数 'fn' 不是函数得到的字符串

python-3.x - 使用生成的变量,其值在一个函数中分配给另一个函数

javascript - 能够中止异步调用

jquery - Jquery 在怪异模式下运行良好吗?

javascript - 这是克隆任何对象/函数/等的有效/安全方法吗?在 ES6 中?