【问题标题】:Splitting classes & matching them against another DIV. JQuery拆分类并将它们与另一个 DIV 匹配。 jQuery
【发布时间】:2012-01-28 16:09:03
【问题描述】:

我有一个名为 box 的 div,其中包含三个类。我想创建一个名为 relatedBoxes 的变量,用于存储共享 box 具有的任何相同类的复选框。

我正在拆分这些类并将它们存储在名为 splitClass 的变量中。

我现在只需要查看:checkbox 是否包含保存在splitClass 中的任何类的方法。我尝试过创建变量relatedBoxes,但这并不完全奏效。

标记:

<div id="box" class="marker blue large">

JavaScript:

var c = $('#box').attr('class');
var splitClass = c.split(' ');

var relatedBoxes = $(':checkbox').hasClass(splitClass);

非常感谢大家

【问题讨论】:

    标签: javascript jquery class jquery-selectors


    【解决方案1】:

    hasClass 需要一个类名,您现在正在向它传递一个数组。如果您尝试使用markerbluelarge 查找所有 元素,类似:

    var relatedBoxes = $( ':checkbox' ).filter( '.' + splitClass.join( ',.' ) );
    

    【讨论】:

    • +1 我喜欢这样。也许和filter一起:$('input[type="checkbox"]').filter('.' + splitClass.join( ',.' ))
    • @FelixKling -- 就是这么做的 :)
    • 这看起来不错,给我一点时间来测试一下。希望它将存储与任何这些类匹配的所有复选框!感谢您的回答!
    • @CecilTheodore——就是这样。它最终解析为 $( ':checkbox' ).filter( '.marker,.blue,.large' ) -- , 是 jQuery 选择器中的“或”运算符
    • 这很酷。真的简化了。 +1 狼!也解决了。
    【解决方案2】:

    您可以使用.filter() [docs] 并遍历元素的类:

    var splitClass = $('#box').attr('class').split(' ');
    
    var relatedBoxes = $('input[type="checkbox"]').filter(function() {
        for(var i = 0, len = splitClass.length; i < len; i++) {
            if($(this).hasClass(splitClass[i])) return true;
        }
        return false;
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-02
      • 1970-01-01
      • 1970-01-01
      • 2021-04-27
      • 1970-01-01
      • 2018-03-18
      • 1970-01-01
      相关资源
      最近更新 更多