【发布时间】:2011-06-23 18:22:39
【问题描述】:
对于大多数更改选择的 jQuery 函数调用,可以使用 end 在选择中返回一个步骤。例如:
$('#myElement').parent().show().end().css('color', '#ff0000');
这会显示父元素,然后将原始选择变为红色。
但是,当我定义自己的过滤选择的 jQuery 插件时,我没有获得此功能。例如:
$.fn.nextBarOne = function(selector) {
var ret = this.next().next();
return (typeof selector === 'undefined') ? ret : ret.filter(selector);
}
如果我现在做$('#myElement').nextBarOne().show().end(),我不会回到原来的选择。显然这是因为函数内部调用了两次next,然后有时又调用了filter。
如何定义一个 jQuery 插件,让我可以像内置函数一样使用end?
【问题讨论】:
-
在 jQuery 源代码中查找“pushStack”;基本上你的代码会像 jQuery 的“find”、“parents”等函数一样调用它。
标签: javascript jquery jquery-plugins jquery-selectors