什么取代了不推荐使用的属性 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的主要内容,如果未能解决你的问题,请参考以下文章

为什么推荐你使用 logback 取代 log4j

web前端开发图片放大了不清晰

官方推荐 Flow 取代 LiveData,有必要吗?

c# 有啥框架能取代EF的?

啊?官方推荐 Flow 取代 LiveData,有必要吗?

啊?官方推荐 Flow 取代 LiveData,有必要吗?