jQuery插件开发 - 跟踪已应用的插件的所有元素

时间:2014-04-07 15:56:41

标签: jquery

如何创建一个能够访问其应用的其他元素的jQuery插件?

意思是,如果通过$('selector')应用自定义插件.test(),test可以添加一个事件点击到'selector'匹配的所有元素。

在这个点击事件中,需要对“选择器”匹配的所有其他元素执行某些操作,这样做的最佳方法是什么?

以下是一个工作示例:

  • 它会将点击事件应用于所有范围,
  • 单击
  • 将记录已应用测试的所有其他元素。

-

$.fn.test = function() {
    var children = [];
    return this.each(function(){
        $(this).css('color','green').on('click',function() {
            console.log(children);
        });
        children.push(this);
    });
};

$('span').test()

虽然此示例有效,但这是最佳做法吗?关于插件开发的jQuery文档似乎没有涵盖这个主题。

任何帮助都将不胜感激,谢谢。

1 个答案:

答案 0 :(得分:1)

jsFiddle Demo

本身并不是不好的做法,但可以稍微提高一点。内部jQuery将迭代一组,this内的jQuery.fn是选择器响应的整个集合,因此您不需要使用每个,然后单独重新包装

$.fn.test = function() {
    var set = this;
    return this.css('color','green').on('click',function() {
        console.log(set.not(this));
    });
};

$('span').test()