这应该很简单;我敢肯定我只是不了解它。
仅供引用,该网站使用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/