在JQuery加载的页面中设置变量

时间:2013-10-06 21:07:45

标签: javascript jquery

我有一个包含3个部分的页面。在左侧是一个静态菜单

e.g。

<a href="#" class="actionLink" id="newFile"><li>New File</li></a>

这可以开始新的行动,例如

$('.actionLink').click(function() {
    var folderID; // trying set ID here
    var fileName = $(this).attr('id');
    $("#myAction").load('/ajax/actions/' + fileName + '.php?folder_id=' + folderID);
})

所以,这会加载/ajax/actions/newFile.php

中间是使用jquery .load()加载的页面。在中间的页面中是一系列具有ID的文件夹。点击后,这些文件夹显示其内容显示在页面右侧。

e.g。

<span id="12" class="folder active99">Music</span>

$('.folder').click(function() {
    var folderID = $(this).attr('id');
    $("#myAction").load('/ajax/actions/links.php?folder_id=' + folderID);
})

单击时显示右侧的内容。注意变量folderID。一切正常。

我想要发生的是当在中间选择一个文件夹时,它会更改左侧菜单上的folderID变量,因此当选择一个新动作时,它对应于它应该的文件夹。 / p>

我已尝试将变量设置在各处,即在所有部分var folderID;中,但无论我尝试什么,都不会携带变量。

这可能或有更好的方法吗?我错了吗?

总结:当我点击中间的文件夹时,我需要它将变量添加到左侧菜单。

更新

这是我目前使用的代码:

$(document).ready(function(){
            var folderID = '';
            $('.actionLink').click(function() {
                var fileName = $(this).attr('id');
                $("#myAction").load('/ajax/actions/' + fileName + '.php?folder_id=' + folderID);
            });

            $('.folder').click(function() {
                $('.folder').removeClass('active99'); // remove from all other <SPAN>s
                $(this).addClass('active99'); // add onto current
                var folderID = $(this).attr('id');
                $("#myAction").load('/ajax/actions/links.php?folder_id=' + folderID);
            });
        });

我现在稍微改变了一些事情,所以实际上包含了中间部分而不是使用.load()但是仍然没有工作

1 个答案:

答案 0 :(得分:1)

您正在处理变量范围问题,您必须将folderID变量声明在外部(在更大的范围内),以便它可用于这两个操作:

$(document).ready(function(){
    var folderID = '';
    $('.actionLink').click(function() {
        var fileName = $(this).attr('id');
        $("#myAction").load('/ajax/actions/' + fileName + '.php?folder_id=' + folderID);
    });

    $('.folder').click(function() {
        folderID = $(this).attr('id');
        $("#myAction").load('/ajax/actions/links.php?folder_id=' + folderID);
    });
});