什么取代了不推荐使用的属性 this.selector
Posted
技术标签:
【中文标题】什么取代了不推荐使用的属性 this.selector【英文标题】:What replaces the deprecated property this.selector 【发布时间】:2014-02-09 21:00:41 【问题描述】:在创建我的第一个 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。
【问题讨论】:
您可以将选择器作为参数传递给插件。这是来自文档的建议:api.jquery.com/selector 喜欢jsfiddle.net/arunpjohny/RmwqL/1 ? 为什么需要选择器?您可以访问元素本身。使用选择器会严重限制插件的功能。如果用在一个有类的元素上,一下子就只能用在那个元素上,其他的实例就不能作为单独的实例了。 或者为什么不试试$('.next', this)
之类的?
我不明白?难道不只是$("." + settings.panelClass, this)
将选择限制为传递给插件的元素吗?
【参考方案1】:
this.selector
的替换是不依赖正在使用的选择器,而是使用被选择的元素。因此,您应该重新实现this.each()
,然后正确过滤每个实例的选择。
this.each(function ()
var $this = $(this);
$('.next',this).click(function ()
$('.previous',this)
$("." + settings.panelClass,this)
//etc...
)
http://jsfiddle.net/y9pEV/8/
现在,如果您有两个 DisplayWall
元素,它们将各自独立工作。
不要忘记在 SetDisplay 内部,this
是 Window。
【讨论】:
以上是关于什么取代了不推荐使用的属性 this.selector的主要内容,如果未能解决你的问题,请参考以下文章