jQuery - 在函数之间共享变量

2024-04-14

这应该相当简单;我很确定我只是不明白。

仅供参考,该网站使用 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);

        });

现在,基本上我希望记住 prouD 以便其他不提供它的 a.nav 点击使用。

调用此的链接锚点看起来像<a page="projSettings" projID="522" class="nav">Settings</a>我会保存 522。所以,其他请求(没有 projID,因为数据已加载到其他导航的 DOM 中,并且它们不知道项目ID。我希望这是有道理的。

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

有什么想法吗?


好吧,讽刺的是你已经在存钱了projID在全球范围内(更好的说法是,在window object by not using var在你的声明中。

所以您已经可以访问projID一旦初始化,就可以从代码中的任何地方进行操作。

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

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

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

// your_application.foo = 'another bar';

您可以使用以下方法将这一原则推得更远closures and 函数式编程。存储和保存数据本地而非全局(窗口)的更好解决方案可能如下所示

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 编程。那里有一些好书,我建议从Javascript: the good parts作者:道格拉斯·克罗克福德。

另一个解决方案应该是 jQuery.data()方法,能够将数据存储在全局哈希中。

// store
$.data(document.body, 'projID', projID);

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

// remove
$.removeData(document.body, 'projID');
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

jQuery - 在函数之间共享变量 的相关文章

  • 无法在 Chrome 中获取对象的真实高度/宽度

    我有一个问题 如果我在 css 中设置图像高度并尝试获取高度 宽度 我会在不同的浏览器中得到不同的结果 有没有办法在所有浏览器中获得相同的尺寸 你可以找到一个活生生的例子here http web cinaird se pdf tester
  • Visual Studio 改变 Ctrl-K-D 的工作方式

    In Visual Studio I m using 2012 is there any way of editing the way that Ctrl K D combinations handles its Auto Formatti
  • Chrome 开发工具命中代码但未命中断点

    我在 chrome 开发工具上启用了断点 并且在一行上有一个断点 我知道 chrome 正在运行 因为我将断点放在具有以下语句的行上 alert why is this not breaking 如果我在本地主机中找到该文件 则断点有效 断
  • 角度垫排序不适用于带点表示法的 matColumnDef

    我正在尝试按列对表进行排序 当我必须过滤另一个结果中的结果时 就会出现问题 我尝试通过括号表示法和点表示法访问该属性 但没有给出结果 还将最终节点放置在 matColumnDef 中 但失败 因为有 2 列同名 table table
  • 使用 Jquery 传递隐藏字段值

    我有一个正常的hidden Input field我在哪里生成random string 我需要将其附加到我尝试将数据发布到另一个页面的 URL 中 我已经做到了这一点并且效果很好 url Upload html field1 newval
  • 转义 \u200b(零宽度空格)和其他非法 JavaScript 字符

    我有一组 JavaScript 对象 我引导到后端模板 以在页面加载时初始化我的 Backbone js 集合 它看起来像这样 作为 Twig 模板 我遇到的问题是某些文本字段包含 u200b 零宽度空格 这会破坏
  • 修改 Twitter 帖子上可编辑 Div 的内容

    我正在编写一个 chrome 扩展 它可以帮助用户在 Twitter 上输入内容 当在 twitter 上写推文时 twitter 会打开一个可编辑的 div 容器 当用户输入内容时 twitter 大概正在使用某些网络框架 会生成子 di
  • Next.js:错误:React.Children.only 期望接收单个 React 元素子元素

    我有一个名为Nav inside components目录及其代码如下所示 import Link from next link const Nav gt return div a Home a a About a div export d
  • 如何根据另一个下拉列表中的选择动态填充下拉列表中的选项?

    我有一个表 其中包含类别信息 例如产品 我已将它们列在下拉菜单中 现在 我需要做的是 在下一个下拉菜单中列出所选类别的子类别 我希望 javascript 是必需的 但我对 javascript 还不太熟悉 将非常感谢您的帮助 你应该使用
  • 选择 asp.net CheckBoxList 中的所有项目

    ASP NET 和 C 我想要一个带有 全选 项目的复选框列表 当这个特定项目是 已选择 所有其他都将被选择 也 当选择被删除时 这个项目 也将来自所有人 其他物品 选中 取消选中 任何其他项目只会有一个 对特定项目的影响 无论选择状态如何
  • Angularjs : $locationProvider.hashPrefix("!") ;

    我想将网址显示为 www test com 因为我正在使用 locationProvider hashPrefix 但它显示网址为 www test com 我想 哈希之前而不是哈希之后 Thanks var app angular mod
  • 在 Nodejs 中,如何停止 FOR 循环直到 MongoDB 调用返回

    我正在研究下面的代码片段 我有一个名为 stuObjList 的 JSON 对象数组 我想循环遍历数组以查找具有特定标志集的特定 JSON 对象 然后进行数据库调用以检索更多数据 当然 FOR 循环不会等待数据库调用返回并到达 j leng
  • 选择单选按钮时隐藏/显示 3 个文本框

    我有 2 个单选按钮 选择一个文本框时 我想显示 3 个文本框 并在选择其他文本框时隐藏它 这是代码 这是我的 2 个单选按钮
  • 在 React Web 应用程序中使用 createjs-soundjs

    我想用https www npmjs com package createjs soundjs https www npmjs com package createjs soundjs在 React Web 应用程序上播放声音 我正常安装了
  • Vue-Router 抽象父路由

    我正在尝试将当前网站迁移到 vuejs 站点地图必须是 login signup password reset browse search dozens of other routes 由于其中一些路线共享大量 fx 因此我将它们设为父路线
  • 使用ExternalInterface和IE从JavaScript获取Flash中的当前URL

    我正在尝试获取 Flash 播放器当前所在的 URL 不是 swf 文件的 URL 而是浏览器指向的 URL 到目前为止我已经使用过 var st String ExternalInterface call window location
  • 将 JSON 属性绑定到表单

    我有一个 JSON 对象和一个
  • JQuery UI:将长元素放在光标位置而不是元素的中间

    我有一些很长的可拖动元素 可以将它们放入背景表的所有单元格中 当我开始拖动此类元素并将其悬停在可放置容器 表格的单元格 上时 了解元素将被放置到何处的 热点 点是其自身的中间 不幸的是 我的元素的中间通常不可见 并且将元素放在正确的位置是没
  • 如何为 jQuery 插件设置私有变量?

    我想创建一个简单的插件 它使用元素的文本作为默认值 或者您可以在调用插件时设置此值 但是 如果我不设置该值 并为多个元素调用插件 则默认值会成倍增加 function fn reText function options var setti
  • $ 在 JQuery 中意味着什么

    在下面的 var obj one 1 two 2 three 3 four 4 five 5 each obj function i val console log val 这里是什么意思 是对象吗 是一个别名jQuery对象 函数 它充当

随机推荐

  • Memcached 与 Windows 和 .NET

    有没有人已经在 Windows 环境中实现了 memcached 以供生产使用 因为我读过很多博客 不建议在 Windows 中运行 memcached 尤其是用于生产用途 例如在 Windows 上运行 memcached http la
  • 如何将 Citrix 中的 C# 程序实例限制为每用户 1 个

    我有一个带有 C 代码的 Windows 窗体应用程序 如下所示 针对 NET Framework 4 在我的开发人员工作站上 此代码可以阻止我启动该程序的多个实例 但是 QA 有一个 Citrix 测试环境 每个用户仍然能够启动多个实例
  • 使用 r.js 打包使用“文本”加载视图的 SPA 应用程序

    我正在尝试使用 grunt 将 SPA 应用程序 requirejs durandal 2 knockout 构建到单个 main build js 文件中 并且我遇到了 durandal 用于加载我的 文本 插件的严重问题意见 在开发中
  • 如何将单行拆分为多行并插入到 Oracle 中的表中?

    我从表中选择数据Employee Master使用下面的查询 SELECT EMP ID EMP NAME EMP LOC1 EMP LOC2 EMP LOC3 EMP DESG EMP ADDR1 EMP ADDR2 EMP ADDR3
  • android studio 3.4 中的 R.java 文件

    我只是想学习android开发 并且正在使用最新版本的android studio 但是 我找不到R java我的文件夹树视图中的文件 我还清理并重建了我的项目 但我仍然看不到 source R文件夹也不R java file 我也在学习
  • 我的 PHP 应用程序是否正确支持 UTF-8?

    我想确保我所知道的有关 UTF 8 的一切都是正确的 我已经尝试使用 UTF 8 一段时间了 但我不断遇到越来越多的错误和其他奇怪的事情 这使得拥有 100 UTF 8 网站几乎不可能 总有一些地方是我似乎想念的 也许这里有人可以更正我的列
  • 从 A 系列升级到 D 系列 Azure 虚拟机

    我们在 A 系列虚拟机上安装了 SQL Sever 我们想要升级到 D 系列虚拟机 是否只是在 Azure 中升级 VM 并单击 保存 那么简单 或者还有其他我需要注意的事情吗 我听说有人因为虚拟机所在的集群中不可用的级别而遇到升级问题 A
  • 是否有适用于 Nunit 的免费 Visual Studio 插件?

    我很便宜 不想支付 ReSharper 或 TestDriven NET 的费用 是否有适用于 NUnit 的免费 Visual Studio 插件 您可以创建一个空白项目 例如选择控制台应用程序 并在项目的属性中选择 DEBUG 标签并选
  • 如何测试某个地理位置是否在“现实世界”中被访问过?

    好的 所以我已经有了这个问题的答案 但我花了很长时间才找到答案 所以我想我会分享它 特别是因为someone https stackoverflow com users 975457 fusion27问我但在不相关的问题 https sta
  • 在 Maven 测试范围中运行时,如何排除提供的范围中的依赖项?

    在 Maven 测试范围中运行时 如何排除提供的范围中的依赖项 我有一个不寻常的用例 我需要排除特定提供的实现并将其替换为测试用例中的另一个实现 Maven 测试似乎也总是包含其他范围 但就我而言 我想破例 我该怎么做呢 在某些情况下 您需
  • 如何异步等待直到我从数据库收到数据?

    我正在尝试创建可以通过屏幕访问的商店 文件结构 索引 ios js app index js app store database js app store userStore js 索引 ios js import AppRegistry
  • 如何解释无效的 CSS 行?

    我花了大约30分钟调试字体加载 https stackoverflow com q 20900218 1420197页面出现问题 我终于发现我使用了错误的注释 this is a comment font face is this igno
  • 使用 JDBC 获取所有外键

    我正在使用 postgreSQL 我正在尝试从表中获取所有外键 这是我目前正在使用的方法 public String getFKeyData String tableName int i throws SQLException Databa
  • RVM设置ruby默认,当打开新终端时删除RVM设置,返回系统ruby

    我刚买了一台新 MacBook Pro 并尝试在系统中设置 RVM 我安装了RVM并将默认设置为 rvm list default 默认 Ruby 用于新 shell ruby 1 9 3 p194 x86 64 If RVM is在 sh
  • 使用 javascript 对 html 脚本进行小修改,我无法解决[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 这是我的代
  • tkinter python 的全局变量问题

    我正在尝试创建一个简单的界面来访问具有第一个 最后一个 上一个和下一个功能的名称数组 但我用作位置跟踪器的全局变量不起作用 我已经提到过各种问题 非常感谢您的帮助 这是代码 from tkinter import Tk Label Entr
  • Google Maps API v3:地形图的自定义样式

    有谁知道是否可以为地形图创建自定义浮雕样式 显然 您可以为法线贴图创建自定义样式 但我也想更改地形的默认颜色渐变 非常感谢 您确实可以设置地形图的样式 我这里有一个 JSFiddle 演示了这一点 https jsfiddle net w7
  • Eclipse调试时断点错误如何解决?

    需要调试一个JAR文件 ProA 所以在项目中导入源代码 但是在尝试设置断点时 Eclipse 出现一个奇怪的错误 详情如下 Unable to install breakpoint due to missing line number a
  • 为什么 jQuery 1.9+ attr() 方法没有被弃用?

    作为一名 jQuery1 9 软件开发人员 我可以 弃用 使用attr 我日常工作中的方法 正如许多问题所表明的那样 prop 与 attr https stackoverflow com questions 5874652 prop vs
  • jQuery - 在函数之间共享变量

    这应该相当简单 我很确定我只是不明白 仅供参考 该网站使用 jQuery 在内容上运行 ajax load 在我的主父页面上 在标题中我有我的 nav load jQuery 代码