在创建我的第一个jQuery插件时,我想在插件代码中使用仅限于最外层选择器的选择器。 this.selector 非常完美。然而,它被带走了。 :/所以我想使用最佳实践,而不是编码折旧属性。
我想确保我只影响选择器中的项目。现在我的插件有疯狂的溢出。我的var panelCount当然是计算整个页面的隐藏和循环,而不是它应该等等。
...剪断
var defaults = { displayCount: 2, startIndex: 0, panelClass: "panels", hoverClass: "hover", rounded: false }, settings = $.extend({}, defaults, options);
var panelCount = $("." + settings.panelClass).length; //needs restraints
剪断
我使用以下调用来确保链接有效。
$('.DisplayWall').metro({displayCount:2,hoverClass:"hover"}).css("color","red");
我有fiddle here。
答案 0 :(得分:2)
this.selector
的替换是不依赖于正在使用的选择器,而是使用所选的元素。因此,您应该重新实现this.each()
,然后根据实例正确筛选您的选择。
this.each(function () {
var $this = $(this);
$('.next',this).click(function () {
$('.previous',this)
$("." + settings.panelClass,this)
//etc...
})
现在,如果您有两个DisplayWall
元素,它们将各自独立工作。
不要忘记在SetDisplay中,this
是Window。