javascript – 快速创建方法

嗨,我试图创作一个jQuery插件,我需要有一些方法可以被初始化为这种对象,例如:
$('.list').list({some options}); //This initializes .list as a list

//Now I want it to have certain methods like:
$('.list').find('List item'); //does some logic that I need

我试过

$.fn.list = function (options) {
    return this.each(function() {
        // some code here
        this.find = function(test) {
            //function logic
        }
    }
}

和其他几个不同的尝试,我只是无法弄清楚如何做到这一点.

编辑:

我会尽力解释这个更好.

我试图把一个表变成一个列表,基本上就像一个列有列标题和可排序项目的计算机上的列表以及其间的一切.你用一个命令启动表

$(this).list({
    data: [{id: 1,name:'My First List Item',date:'2010/06/26'},{id:2,name:'Second',date:'2010/05/20'}]
});

.list将使< tbody>可排序并执行其他一些初始任务,然后将以下方法添加到元素中:
.findItem(condition)将允许您通过条件查找某个项目(如findItem(‘name ==“Second”))
.list(condition)将列出与给定条件匹配的所有项目
.sort(key)将按照给定的键对所有项进行排序
等等

做这个的最好的方法是什么?

解决方法

如果您希望这些方法可用于任何jQuery对象,则必须将其中的每一个添加到jQuery的原型中.原因是每次调用$(“.list”)时,将创建一个新的新对象,并且您附加到先前此类对象的任何方法都将丢失.

将每个方法分配给jQuery的原型:

jQuery.fn.extend({
    list: function() { .. },findItem: function() { .. },sort: function() { .. }
});

这里的列表方法是特殊的,因为它可以在两种情况下被调用.首先,当初始化列表时,第二,当通过条件查找特定项目时.你必须通过参数类型或其他一些参数区分这两种情况.

如果为尚未使用列表插件初始化的对象调用这些方法,那么也可以使用数据API抛出异常.当(‘xyz’).list({..})被首先调用时,将一些状态变量存储在该对象的数据高速缓存中.当任何其他方法 – “list”,“findItem”或“sort”稍后被调用时,检查对象是否在其数据高速缓存中包含该状态变量.

一个更好的方法是命名你的插件,以便list()将返回扩展对象.可以对其返回值调用三种扩展方法.界面将如下所示:

$('selector').list({ ... });
$('selector').list().findOne(..);
$('selector').list().findAll(..);
$('selector').list().sort();

或者首次保存对返回对象的引用,并直接调用方法.

var myList = $('selector').list({ ... });
myList.findOne(..);
myList.findAll(..);
myList.sort();

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...