2015-09-04 42 views
3

當我嘗試通過使用jQuery, 在html標記中添加像id或class這樣的屬性時,該屬性的舊值將丟失。attr()方法jQuery中的問題

下面是一個例子:

<div id="dom"> 
    <h1 class="class">I am heading 1</h1> 
    <h1 class="class">I am heading 2</h1> 
    <h1 class="class">I am heading 3</h1> 
    <h1 class="class">I am heading 4</h1> 
    <h1 class="class">I am heading 5</h1> 
    <h1 class="class">I am heading 6</h1> 
</div> 

現在我想的jQuery其中有一個名爲「類」類添加另一個類。

<script> 
    $(document).ready(function(){ 
     $('.class').attr('class','newClass') 
    }) 
</script> 

因此,它刪除舊的類並設置新的類。但我想要兩個班。解決這個問題的好方法是什麼?

回答

6

.attr()用於獲取/設置新值。在設置條件的情況下,與屬性相關的先前值被新的覆蓋。

您應該使用.addClass()添加更多的類(ES):

$('.class').addClass('newClass'); 

對於.addClass()參數添加多個類別,獨立多類與空間:

$('.class').addClass('newClass newclass2'); 
5

問題:

當您使用attr()時,jQuery將設置class屬性值爲newClass,從而替換所有以前的類。

爲該組匹配元素設置一個或多個屬性。

解決方案:

使用addClass()一類新增加的元素。

將指定的類添加到匹配元素集中的每個元素。

$('.class').addClass('newClass'); 

依我之見,你的情況,也沒有必要使用jQuery在網頁加載時添加類。你可以在HTML中做到這一點。

演示

$('.class').on('click', function() { 
 
    $(this).addClass('newClass'); 
 
});
.class { 
 
    color: red; 
 
} 
 
.newClass { 
 
    color: green; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script> 
 
<div id="dom"> 
 
    <h1 class="class">I am heading 1</h1> 
 
    <h1 class="class">I am heading 2</h1> 
 
    <h1 class="class">I am heading 3</h1> 
 
    <h1 class="class">I am heading 4</h1> 
 
    <h1 class="class">I am heading 5</h1> 
 
    <h1 class="class">I am heading 6</h1> 
 
</div>

3

只需使用addClass():

$('.class').addClass('class-name'); 
1

當你將使用ATTR()函數比它會隨着當前屬性取代。你將使用jQuery的addClass()方法。它會幫助你。

$('.class').addClass('newClass')