我想选择具有相同类的元素并显示它们,所以我尝试了以下内容:
$( $(this).className ).show();
但是以下
console.log( $(this).attr("class") );
当课程为a b c
且我想要class="a b c"
时,会回复a.b.c
。
答案 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;
答案 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);