这应该很简单;我敢肯定我只是不了解它。

仅供引用,该网站使用jQuery在内容上运行ajax .load()。

在我的主父页面的标题中,有我的nav .load()jQuery代码:-

<script type="text/javascript" charset="utf-8">

    $(document).ready(function(){

        $('a.nav').click(function() {
            page = $(this).attr('page');
            projID= $(this).attr('projID');

            if($("#mainRight").is(":visible")) { $('#mainRight').hide(200); }

            switch(page) {

            case 'projSettings': $("#mainRight").load("content.php?load=" + page, { projID: projID}); break;
            case 'projMetrics': $("#mainRight").load("content.php?load=" + page, { projID: '5000227' }); break;
            case 'projTags': $("#mainRight").load("content.php?load=" + page, { projID: projID}); break;
            case 'projShare': $("#mainRight").load("content.php?load=" + page, { projID: '5000227' }); break;

            }
            $('#mainRight').show(300);

        });

现在,基本上我希望对projID进行记忆,以供其他不提供它的a.nav点击使用。

一个链接的 anchor 调用它看起来像<a page="projSettings" projID="522" class="nav">Settings</a>,我想保存它522。因此,其他请求(不带有projID,因为数据已被其他导航加载到DOM中,并且他们不知道projID,我希望这是有道理的。

所以,我想知道当projID已在上一个调用中使用时,如何拥有类似<a page="projSettings" class="nav">settings</a>的链接。

有什么想法吗?

最佳答案

好吧,具有讽刺意味的是,您已经在全局范围内保存了projID(更好的说,在window object中,由而不是在声明中使用var保存)。

,因此,一旦初始化,您就可以在代码中的任何位置访问projID

无论如何,这不是一个好的实践,相反,这是一个非常糟糕的实践。

我能想到的最好的方法是创建您自己的应用程序对象,您可以在其中存储所有数据并从那里访问它们。

var your_application = {
    var foo  = 'bar',
        base = 'ball';
};

// your_application.foo = 'another bar';

您可以使用闭包功能编程来 push 这一原理的发展。更好的解决方案是将数据存储在本地而不是全局(窗口),而不是全局(窗口)
var your_application = function(){
    var foo  = 'bar',
        base = 'ball';

    return {
        getfoo: function(){
            return foo;
        },
        setfoo: function(newfoo){
            foo = newfoo;
        }
    };
});

var app = your_application();
app.setfoo('foobar!');
alert(app.getfoo());

那就是方法性 javascript编程的想法。有一些不错的书,我建议从Douglas Crockford的Javascript: the good parts开始。

另一个解决方案应该是jQuery .data()方法,该方法能够将数据存储在全局哈希中。
// store
$.data(document.body, 'projID', projID);

// access
var foo = $.data(document.body, 'projID');

// remove
$.removeData(document.body, 'projID');

关于javascript - jQuery-在函数之间共享变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3201473/

10-11 02:39