【发布时间】:2010-04-02 20:30:44
【问题描述】:
我正在尝试开始编写一些简单的 jQuery 插件,在我的第一次尝试中,如果我想我会写一些除了将 .first 和 .last 类应用于传递的元素之外什么都不做的东西。
例如,我希望最终能够:
$('li').firstnlast();
所以在这个html结构中:
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
<ul>
<li></li>
<li></li>
</ul>
它将创建以下内容:
<ul>
<li class="first"></li>
<li></li>
<li></li>
<li class="last"></li>
</ul>
<ul>
<li class="first"></li>
<li class="last"></li>
</ul>
到目前为止我在我的插件中写的是这样的:
(function($) {
$.fn.extend({
firstnlast: function() {
$(this)
.first()
.addClass('first')
.end()
.last()
.addClass('last');
}
});
})(jQuery);
但是上面只返回这个:
<ul>
<li class="first"></li>
<li></li>
<li></li>
<li></li>
</ul>
<ul>
<li></li>
<li class="last"></li>
</ul>
似乎只将li 传递给函数,它会查看整个页面上的所有li 元素,然后将类应用于它。
我需要弄清楚的是,我如何基本上使函数“上下文感知”,以便将上述li 传递到函数中会将类应用于父ul 内部的lis,不要到整个页面上的第一个和最后一个li。
任何提示、想法和帮助将不胜感激。
【问题讨论】:
标签: jquery plugins jquery-plugins css-selectors