如何创建一个能够访问其应用的其他元素的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文档似乎没有涵盖这个主题。
任何帮助都将不胜感激,谢谢。
答案 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()