编写一个返回值的 jQuery 插件

2024-01-26

我正在编写一个 jQuery 插件,在某些情况下可以存储一些数据。

我想以一种非常灵活的方式编写它,我可以更改输入参数来获取插件存储的一些值。

解释:

当我打电话时$("#any").myPlugin(),我的插件初始化创建一个div还有一些a里面。 单击一个a将存储它.index()使用.data()方法。 如果我打电话$("#any").myPlugin("getSelection")那么我想获取存储的值.data().

我尝试过的:

(function ($) {
    $.fn.myPlugin = function (action) {
        if (action == null) action = "initialize";

        return this.each(function ($this) {
            $this = $(this);

            if (action == "initialize") {
                $this.html('<div></div>');
                var div = $("div", $this);

                div.append('<a>A</a>').append('<a>B</a>').append('<a>C</a>');

                div.children("a").each(function (i) {
                    $(this).click(function (event) {
                        // Here I store the index.
                        $this.data($(this).index());
                        event.preventDefault();
                        return false;
                    });
                });

                return $this;
            } else if (action == "getSelection") {
                // With this action, I tried to get the stored value.
                return $this.data("selectedValue");
            }
        });
    };
})(jQuery);

创建元素的简单调用:

$("#someElement").myPlugin();

在这里我尝试获取索引,但没有成功:

alert($("#someElement").myPlugin("getSelection"));

那么,可以做我正在尝试的事情吗?


您需要稍微改变一下顺序,如下所示:

(function ($) {
    $.fn.myPlugin = function (action) {
        action = action || "initialize";

        if (action == "getSelection") {
          return this.data('index');
        }

        return this.each(function ($this) {
            $this = $(this);

            if (action == "initialize") {
                $this.html('<div></div>');
                var div = $("div", $this);

                div.append('<a>A</a>').append('<a>B</a>').append('<a>C</a>');

                div.children("a").each(function (i) {
                    $(this).click(function (event) {
                        // Here I store the index.
                        $this.data('index', $(this).index());
                        event.preventDefault();
                        return false;
                    });
                });

                return $this;
            }
        });
    };
})(jQuery);

您可以像这样获取点击的索引:

alert($("#someElement").myPlugin("getSelection"));

你可以在这里尝试一下 http://jsfiddle.net/nick_craver/75ppA/2/,根本问题是你试图从一个值中返回一个值.each() http://api.jquery.com/each/循环,这不起作用。相反,这会从与选择器匹配的第一个对象中获取数据(#someElement在示例中)。还.data() http://api.jquery.com/data/ stores other事情,所以你需要给你的价值一个关键,就像我正在使用的'index'在上面的版本中。

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

编写一个返回值的 jQuery 插件 的相关文章

  • Ajax调用完成后执行函数

    我是 Ajax 新手 我尝试在使用 for 循环时使用 Ajax Ajax 调用之后 我正在运行一个使用 Ajax 调用中创建的变量的函数 该函数只执行两次 我认为 Ajax 调用可能没有足够的时间在循环开始之前进行调用 有没有办法在运行
  • c3js数据标签的位置

    有没有可能的方法来更改数据上方标签的位置c3条形图 在官方文档中 很好地解释了如何通过操作 y 和 x 整数来更改 x 和 y 测量轴上标签的位置 但我没有找到任何数据标签 我试图用简单的方式指出它d3其上c3是基于但是console lo
  • jQuery.ajax() 记录 HTTP 请求

    我有一个发送 HTTP POST 请求的函数 我想记录它以进行调试 这是函数 function serverRequest URL DATA callback ajax url URL type POST dataType text con
  • 以特定顺序运行具有效果的 jQuery 函数

    我在 javascript 函数中有一些 jQuery 可以更改页面上的文本并以特定的时间间隔淡入和淡出 我希望这些函数在每个函数完成其效果后按顺序运行 dialogueExchange1 dialogueExchange2 dialogu
  • 选择更新后不起作用

    我有一个选择的下拉菜单 我更改了选项内容并调用触发器选择 更新但选择不重建下拉列表 这是我更新的
  • JQuery 颜色盒

    如何在没有事件绑定的情况下在页面加载时显示 Colorbox 更简单地说 我希望 Colorbox 在页面加载时立即加载 这是我目前正在使用的 Colorboxhttp colorpowered com colorbox http colo
  • 传递表 ID 时循环遍历

    我有四个 HTML 表 必须将一个表中的数据与用户选择的表中的数据进行比较 我将用户选择的表 ID 传递到此函数中 但我不知道如何循环此表的行 function callme code var tableName table code al
  • 如何关闭字母按钮?

    下面的代码中有一堆字母按钮 table tr tr table
  • jqgrid inlineNav add - 在添加的行上显示保存图标

    我正在使用 jqgrid 的 inlineNav 选项向工具栏添加 添加 选项 我还使用操作格式化程序进行编辑和删除 当我添加新行时 新添加的行有一个编辑图标和一个取消图标 而保存图标位于添加旁边的工具栏上 有没有办法指定新添加的行具有保存
  • kendo ui:grid - 将页面设置在网格的顶部和底部

    有一种简单的情况无法找到解决方案 Kendo UI 仅在底部实现网格分页 我试图让它在顶部显示寻呼机 但它变得无法点击 我认为我的克隆部分是错误的 但不知道如何修复它 预先感谢各位 这是脚本和jsp的一部分
  • EMBER直接路由URL访问不加载数据

    当我直接从浏览器访问我的网址时遇到问题 它不会加载我的单一帖子信息 示例 index html posts 10052308 但当我访问 index html posts 然后单击我的一篇文章时 它会起作用 我的网址会更改为 index h
  • 禁用外部点击时关闭模式

    我正在制作一些使用模式的博客物质化 但我的模态 onclick 外部和错误数据有问题 这是我的代码 main js function changepassword var user userlog val var content conte
  • 是否可以在Chrome中查看jQuery添加的数据

    创建网站时我经常使用 jQuery data 向元素添加数据的函数 是否可以在 Chrome 中查看元素存储的所有数据 因此 当我检查一个元素时 它会在 Chrome 本身中显示数据 如果没有 是否可以编写一个插件来 扩展 到 Chrome
  • 嵌套列表、jquery 和 stopPropagation

    我遇到了嵌套菜单未按照我预期的方式运行的问题 我已经在 StackOverflow 上查看了一堆有关 stopPropagation 的内容 但它似乎不起作用 不幸的是 该网站是基于 WordPress 的 因此我无法直接控制网站上菜单生成
  • .bind 和其他事件之间的区别

    以下代码行之间有什么区别 或者它们只是编写同一内容的两种不同方式 p click function some code here p bind click function some other code here 我是否过于简化了 因为如
  • JQGrid 列自定义..在运行时添加列

    我是 J Query 的新手 正在尝试一些示例http www trirand com blog jqgrid jqgrid html http www trirand com blog jqgrid jqgrid html我看到列名是用
  • Jquery.Validate - 基于哪个选项卡添加/删除规则

    我有一个 Bootstrap 4 选项卡式界面 每个选项卡上都有输入框 我想允许用户根据他们所在的选项卡输入不同的必填字段 因此我希望根据该选项卡添加或删除验证 无论用户位于哪个选项卡 还有一些强制输入 我所做的是创建一个默认验证函数 添加
  • PHP Json_encode 将空格更改为加号 +

    我有一个网络应用程序 我首先将 JSON 数据存储在 cookie 中 然后每 x 秒保存到数据库 它只是打开与服务器的连接 服务器读取 cookie 它实际上并不通过 POST 或 GET 发送任何内容 当我保存到 cookie 时 我的
  • 根据文本内容从 jquery 对象中过滤元素

    我正在尝试使用contains带有 this 关键字 但它给出了错误 JS function var check ul find li filter function return this contains two css color r
  • 议程周视图中的标题显示因加载的 fullcalendar js 文件而异

    在议程周视图中 日历标题中各天之间显示的破折号根据我加载的 fullcalendar js 显示有所不同 例如 如果我加载完整的 calendar js 文件 它会按预期工作 2015 年 2 月 8 日至 14 日 使用此脚本标签 当我尝

随机推荐

  • R:控制直方图箱的数量

    我正在使用 hist 函数来分析我生成的一些数据 对于分析测定 我想精确控制直方图箱的数量 我知道 中断参数 并且我可以看到 在许多情况下 垃圾箱的数量与中断的数量有直接关系 即 no bins no breaks 1 由于 R 的算法 情
  • 花栗鼠碰撞检测

    我对花栗鼠完全陌生 而且我刚刚使用它几天 所以我猜这是非常明显的事情 但是我找不到任何相关文档 Chipmunk 中是否有任何回调或方法可以告诉您 2 个给定的形状发生了碰撞 如果不是 最好的方法是简单地在精灵上使用 cgrect cont
  • iOS 6 自定义 URL 方案启动图像错误

    我已经在我的应用程序中实现了自定义 URL 方案 另外 我使用以下命令对启动图像有不同的名称UI启动图像文件键入 info plist 文件说 如果您的应用程序支持一个或多个自定义 URL 方案 它还可以 为每个 URL 方案提供自定义启动
  • 无法从外部机器连接到kafka

    我从 Apache Kafka 开始 当我尝试从外部机器连接时遇到问题 使用下面的配置 如果应用程序和 docker 在同一台机器上运行 则一切正常 但是当我将应用程序放入机器 A 并将 docker 放入机器 B 时 应用程序无法连接 我
  • 在 ng-repeat 中生成 ng-model

    我一直在阅读一些主题 但找不到我所坚持的这个主题的解决方案 我正在尝试添加ng model inside NG 重复像这样的东西 span span
  • CUDA:是否可以将全部 48KB 片上内存用作共享内存?

    我正在 Windows 7 64 位 SP1 上使用 CUDA Toolkit 4 0 和 Visual Studio 2010 Professional 为 GTX 580 开发 CUDA 应用程序 我的程序比典型的 CUDA 程序更占用
  • 创建条带摘要报告

    我最近将付款处理切换到 Stripe 我现在需要为我们的财务部门创建一份报告 显示指定日期范围内的交易汇总 我已经开始创建一个简单的 PHP 网页 并使用 Stripe PHP 库 它将提供以下摘要 交易数量 交易金额 退款次数 退款金额
  • 使用 Mongoose 时出现 MongoDB 弃用警告

    我正在使用猫鼬版本5 2 13 我想是最新的 但是当我尝试执行 findOneAndUpdate 查询时 Mongo 会抛出弃用警告 DeprecationWarning collection findAndModify 已弃用 使用 改为
  • Android OpenCV:无法 dlopen 相机包装库

    如同OpenCV 2 3 如何从Android相机捕获帧 https stackoverflow com questions 7198912 opencv 2 3 how to capture frames from android cam
  • 如果我单击 overrideredirect 窗口并移动它(窗口),如何获得更好的窗口位置?

    当我单击窗口时 在我的例子中 当我单击self top frame and self app name 要移动它 窗口位置将更改为 0 x 和 y 坐标 所以如果我想移动窗口 窗口就会移动到右侧 我可以修复它 以便窗口不会移动到右侧 或从我
  • Javascript使用datejs解析RFC3339日期时间

    我在使用来自 Google Calendar API 的日期格式的 datajs 时遇到问题 我认为日期时间格式是 RFC3339 这是从日历 api 返回的示例日期时间 2012 01 05T08 45 00Z 这是来自 datejs 文
  • 使用 SQLAlchemy 和 PostgreSQL 进行 Flask 单元测试耗尽数据库连接

    我正在使用 Flask SQLAlchemy 和 PostgreSQL 运行一套相当简单的测试用例 使用应用程序工厂 我定义了一个基本单元测试类 如下所示 class BaseTestCase unittest TestCase def s
  • Ionic devapp 只是搜索

    我在使用 Ionic DevApp 应用程序时遇到问题 我使用它在浏览器中打开的 ionicserve c 命令 但在我的设备上它只是寻找 侦听网络上的应用程序 它没有出现在我的设备上 但是我已经在其他 2 台设备上进行了测试 并且项目出现
  • 如何禁用 jquery 数据表中的显示条目属性

    我刚刚开始使用 jquery 我使用 jquery 数据表插件来启用表视图 我需要禁用显示条目属性 谁能帮助我在哪个js中我需要禁用该属性 我已关注此链接 但没有帮助 不知道要修改哪个js here http datatables net
  • QTreeView内存消耗

    我现在正在测试 QTreeView 功能 我对一件事感到惊讶 看来 QTreeView 内存消耗取决于项目计数 O O 这是非常不寻常的 因为这种类型的模型视图容器仅跟踪正在显示的项目 其余项目都在模型中 我用一个简单的模型编写了以下代码
  • Android 证书已更改?

    我最近格式化了我的计算机并更新到 Windows 7 我备份了我的密钥库并尝试用它签署我的 apk 但它给了我一个错误 说我的证书将在 22 年后过期 这仅低于市场上传 apk 的要求 所以现在我陷入无法更新我的应用程序 这怎么发生的 有没
  • Emacs 打开最近的文件很慢!

    直接打开文件时速度很快 但是当我打开最近激活的文件时 在我的文件中添加以下行 emacs require recentf recentf mode 1 setq recentf max menu items 25 global set ke
  • Actionscript 3:如何从外部类访问舞台上的元素?

    我的 as 文件中有一个外部类 我的问题是我无法访问舞台上的元素 像 stage txtfield text 或 this parent txtfield text 这样的代码不起作用 txtfield 是动态文本字段的实例名称 这在一定程
  • Laravel 注册表单上的自定义验证

    我目前正在努力对注册表进行一些验证 基本上 当用户注册时 它会检查他们输入的唯一代码是否有效 如果无效则不允许他们注册 但在我从中读取的代码表中 代码上也有一个到期日期 我需要在认为有效后再次检查到期日期尚未过去 换句话说 它不大于现在 我
  • 编写一个返回值的 jQuery 插件

    我正在编写一个 jQuery 插件 在某些情况下可以存储一些数据 我想以一种非常灵活的方式编写它 我可以更改输入参数来获取插件存储的一些值 解释 当我打电话时 any myPlugin 我的插件初始化创建一个div还有一些a里面 单击一个a