-2

我之前问过一个问题,但我意识到这太令人困惑了。基本上我需要想出一种方法来编写一个行为如下的选择器:

对于此“容器”中的每个元素,搜索以查看该元素是否具有苹果或香蕉或蔓越莓或火龙果类。如果确实如此,则将此“.style”类附加到该元素。

扭曲的是,我正在检查的所有类都是动态的。我需要一种灵活的方式来插入不同的类以在选择器中搜索。

For example:
Let's say I have one selector that reads:
For each element in '<div>', does element have banana OR dragonfruit.

But another selector would be different:
For each element in '<div>', does element have cranberry.

看到所以基本上我需要一个动态选择器,它不仅改变它搜索的内容,而且改变搜索列表的长度。有些搜索只需要一个过滤器,有些则需要多个。

TLDR:有没有办法写:

$(.divContainer).hasClass(x or y or z or w or....) 其中 x、y、z、w.... 是动态生成的不同类名。我怎样才能做到这一点?!我正在考虑使用函数调用代替 x、y、z .... 基本上在 .hasClass 参数中使用函数

4

3 回答 3

0

你可以像这样定义一个javascript函数:

function hasAnyClasses(possibleClasses) {

    var container = $('.divContainer');

    $(possibleClasses).each(function(idx, el) {
        if (container.hasClass(el)) {
            return true;
        }
    });

    return false;
}

然后使用一系列可能的类调用它,您可以动态生成这些类:

if (hasAnyClasses(['x', 'y', 'z'])) {
    // has either class 'x' or class 'y' or class 'z'
}
于 2013-07-19T05:04:34.710 回答
0

有关示例,请参见http://jsfiddle.net/FEz3F/ 。Jquery 选择器可以接受多个元素进行选择,以逗号分隔。

上面的jquery代码:

$(document).ready(function()
{
    var targetDiv = $('.container');
    searchElement(targetDiv, '.class1, .class2');           
    function searchElement(div, className)
    {
        $(div).find(className).each(function()
        {
            // ...
        });
    }                   
});
于 2013-07-19T05:11:26.197 回答
0

定义一个这样的函数,

function checkSelector(selectionList){
      $(selectionList).each(function(index, sel) {
                      if (container.hasClass(sel)) {
                            return sel;
                 }

}

然后使用 switch 来评估和应用您的代码。

switch (checkSelector(['apple', 'banana'])) {
         case ('apple'):
                 //Code for apple class
                        break;
         case ('banana'):
                 //code for banana     
                        break;

         default:
               break;
}
于 2013-07-19T05:14:18.493 回答