javascript - 在 jQuery 中使用 $.data() 在元素上存储标志

标签 javascript jquery jquery-plugins

我正在编写一个简单的 jQuery 插件,将输入标签转换为时间格式的元素(在模糊时它将 245p 更改为下午 2:45)。

由于我不想将时间格式事件应用到同一个元素两次,我需要一种方法来检测提供的列表中的特定元素是否尚未应用格式。

这是代码的相关部分:

var methods = {
    init : function(sel) {
        var $this = $(sel);
        return $this.each(function(){
            var data = $(this).data('time_formatted');
            if (data) {
                return;
            } else {
                $(this).data('time_formatted', true);

我听说在插件中使用 $(sel).data() 不是一个好主意;相反,请使用 $.data()。我不知道为什么,这就是我听到的;老实说,我不知道有什么区别。

所以我的问题是,这是完成检查特定元素是否已在插件中应用时间格式化程序的方法吗?

如果您想查看当前开发状态​​下的插件,请参阅 http://jsfiddle.net/userdude/xhXCR/ .

谢谢!

贾里德

最佳答案

你在哪里听说过使用.data()不好? jQuery's plugin autoring页面说:

Often times in plugin development, you may need to maintain state or check if your plugin has already been initialized on a given element. Using jQuery's data method is a great way to keep track of variables on a per element basis. However, rather than keeping track of a bunch of separate data calls with different names, it's best to use a single object literal to house all of your variables, and access that object by a single data namespace.

所以应该没问题。

关于javascript - 在 jQuery 中使用 $.data() 在元素上存储标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5723900/

相关文章:

jquery - 两个 JQuery(图像 slider 和标题)只为列表的第一张图像添加标题?

javascript - JQuery datepicker - 如何更改特定开始日期的最大日期?

javascript - .aspx 页面 - 在 pageLoad() 中使用 document.getElementById

javascript - CasperJS PhantomJS SSL 问题

javascript - 如何在另一个 JavaScript 文件中包含一个 JavaScript 文件?

jquery - 使用 jQuery spritely 插件的 .pan() 在定义的空间之间跳过

jQuery/CSS : I need a plugin, 让我改变 <select> 表单元素的样式

javascript - 如何使用jquery循环php回显的表行并选择满足属性的特定行

javascript - jquery 数组未获取所有值且未发送到 laravel Controller

javascript - 即使某些元素不存在,Jquery 也会使监听器工作