:data()选择器应该被识别?

And*_*dén 5 jquery jquery-ui

我正在使用jquery-1.11.1,我尝试使用:数据选择器,如上所述

https://api.jqueryui.com/data-selector/

试图找到具有某个键的所有元素,如下所示:

var elements = $(':data(kendoMobileScroller)');
Run Code Online (Sandbox Code Playgroud)

但我得到的只是一个错误说:

错误:语法错误,无法识别的表达式:unsupported pseudo:data

难道不应该有这样的选择器吗?

A. *_*lff 12

您需要包含jQuery UI才能使:data伪选择器工作,例如:

<link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.4/themes/smoothness/jquery-ui.css" />
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.4/jquery-ui.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

或者只是扩展jQuery:

$.extend( $.expr[ ":" ], {
    data: $.expr.createPseudo ?
        $.expr.createPseudo(function( dataName ) {
            return function( elem ) {
                return !!$.data( elem, dataName );
            };
        }) :
        // support: jQuery <1.8
        function( elem, i, match ) {
            return !!$.data( elem, match[ 3 ] );
        }
});
Run Code Online (Sandbox Code Playgroud)

DEMO

  • @AndersLindén因为这是一个jQuery UI功能,而不是来自jQuery核心插件.为什么jQuery团队不包含它,只是依赖于他们自己的选择. (3认同)