2015-04-22 45 views
2

elem.className返回類名稱的空格分隔列表

有沒有更好的方式來選擇把這個比

"." + classNamesString.split(" ").join(".") 

<div class="a b c"></div> 
<div class="a b c"></div> 
<div class="a b c"></div> 
<div class="a b c"></div> 
<div class="a b d"></div> 
<div class="a b c"></div> 
<div class="a b c"></div> 

$("a").click(function(){ 

    var classNames = $(this).attr("class"); 
    $("body").find(< use classNames >).colorBlue(); 

}); 

我試圖避免小工具函數和搜索一些jQueryesque方式通過只是時間代替空間做到這一點,如果可能的話

+4

爲什麼需要這個?如果你已經將'elem'存儲在一個變量中,爲什麼你需要再次選擇它? –

+2

我想這是最好和最乾淨的方式。 – Pepijn

+0

@RoryMcCrossan看起來他想要選擇共享類的所有元素 – user3154108

回答

2

你可以把它簡化一點:

"." + classNamesString.replace(/ /g,".") 
0

例如

HTML

<div class="hai bye hello">Text</div> 

jQuery的是

$("." + $('div').attr('class').split(" ").join(", .")).click(function() { 

    alert('hello') 
}); 

喲烏爾背景下

$("body").find("." + $('div').attr('class').split(" ").join(", .")).css('color', 'blue'); 

Fiddle

0

您可以使用屬性選擇,如果類似的類以相同的順序總是設置在HTML標記:

$("body").find('[class="' + classNamesString + '"]').colorBlue(); 
0

在這裏,如果你可以嘗試:

var class_element = ($(element).attr("class")).split(" ").join(", ."); $(class_element).yourfunction();

0

嘗試利用.filter()

$("div").click(function() { 
 

 
    var classNames = $(this).attr("class"); 
 
    var _selector = $("body *").filter(function() { 
 
    return this.className === classNames 
 
    }); 
 
    _selector.css("color", "blue"); 
 

 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div class="a b c">abc</div> 
 
<div class="a b c">abc</div> 
 
<div class="a b c">abc</div> 
 
<div class="a b c">abc</div> 
 
<div class="a b c">abc</div> 
 
<div class="a b c">abc</div> 
 
<div class="d e f">def</div> 
 
<div class="a b c">abc</div>