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

时间:2011-04-19 23:24:06

标签: 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/

谢谢!

贾里德

1 个答案:

答案 0 :(得分:4)

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

  

在插件开发中,您可能需要维护状态或检查您的插件是否已在给定元素上初始化。使用jQuery的data方法是一种基于每个元素跟踪变量的好方法。但是,不是跟踪一堆具有不同名称的单独数据调用,而是最好使用单个对象文字来容纳所有变量,并通过单个数据命名空间访问该对象。

所以它应该非常好。