0

Dojo 有类似jQuery 的 :has() 选择器吗?

4

1 回答 1

2

Dojo,不直接支持这个。它原生支持两种不同的选择器引擎:acme 和 lite(参见dojo/query的文档)。Lite 旨在快速高效,但缺少一些高级(但很少使用的功能)。Acme 是一个功能齐全的 CSS3 选择器。

您还可以将 3rd-party 引擎作为插件加载;包括jQuery 使用的Sizzle 引擎。通过使用 Sizzle,您可以在查询中访问:has()选择器。

这可以在主 Dojo 配置中或作为插件即时完成:

var dojoConfig = {
    /*
        This change the selector engine globally within Dojo.  Be careful
        that this does not adversely affect any loaded modules, which
        use dojo/query
    */

    "selectorEngine": "sizzle/sizzle"
};

或者:

require([
    "dojo/query!sizzle/sizzle"
], function($){
    var divs = $("div:has(p)");
});

由于 Sizzle 不是 Dojo 核心的一部分,因此您需要将其下载并安装到 dojo、dojox、dijit 旁边的 sizzle 目录中才能正常工作。(另请参阅:dojo/query(替代选择器)Sizzle 引擎)。

除非这是必备功能,否则最好使用本机选择器。然而,Dojo 的设计具有最大的灵活性。

于 2012-11-19T08:00:26.637 回答