找到适用于特定元素的选择器的有效方法

时间:2010-11-20 16:50:33

标签: jquery css-selectors

我在js数组和元素中预定义了css选择器列表。我需要找到适用于该元素的选择器。

这是我的代码:http://jsfiddle.net/mjALF/

HTML

<div id="main">
    <div class="a" id="d1">
        <div class="b"  id="d2">
            <div class="c"  id="d3">

            </div>
        </div>
    </div>
    <div class="b"  id="d4"></div>
    <div class="c"  id="d5"></div>
</div>

JS

var selectors = ['#main .a', '#main .a .b', '.a', '#main .c', '#main .a .b .c'];

// pseudo code
/*

find_selectors($('#d4'), selectors);
result: null

find_selectors($('#d1'), selectors);
results: ['#main .a', '.a'];


*/

1 个答案:

答案 0 :(得分:4)

您可以使用$.grep()获取带有.is()的已过滤数组,如下所示:

var elem = $("#d1");
var results = $.grep(selectors, function(s) { return elem.is(s); });

You can test it out here。或者,作为一个插件!

$.fn.selectorMatch = function(sArray) {
    var elem = this;
    return $.grep(selectors, function(s) { return elem.is(s); });
};

然后你可以这样称呼它:

var results = $("#d1").selectorMatch(selectors);

You can test the plugin version out here