如何选择具有相同类jquery的元素

时间:2017-02-02 15:12:26

标签: javascript jquery

我想选择具有相同类的元素并显示它们,所以我尝试了以下内容:

$( $(this).className ).show();

但是以下

console.log( $(this).attr("class") );

当课程为a b c且我想要class="a b c"时,会回复a.b.c

3 个答案:

答案 0 :(得分:4)

您可以将split()join()这两种方法合并为:

var classes = $(this).attr('class').split(' ').join('.');

$( '.' + classes ).show();

希望这有帮助。



$('#span-1').on('click', function(){
    var classes = $(this).attr('class').split(' ').join('.');

    $( '.' + classes ).show();
})

#span-2,#span-3,#span-4{
  display:none;
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<span class="a b c" id="span-1">Span 1 (Click me)</span>
<br>
<span class="a b" id="span-2">Span 2(Hidden)</span>
<span class="a b c" id="span-3">Span 3 with same classes (Hidden)</span>
<span class="b c" id="span-4">Span 4 (Hidden)</span>
&#13;
&#13;
&#13;

答案 1 :(得分:2)

.替换空格:

$('.' + $(this).attr('class').trim().replace(/\s+/g, '.')).show();

答案 2 :(得分:0)

首先,你需要trim className,然后使用\/s*/拆分它,因为类和它们之间可能有多个空格。然后你必须处理空的className:

var className = $(this).attr("class");
var classes = className.trim().split(/\s*/);
var selector = classes.length? '.' + classes.join('.'): '*'; //because then all elements have the same class (the empty class)

var $matches = $(selector);