2013-04-02 147 views
0

在下面,我想刪除class「item1」並將class item2添加到maindiv。下面的代碼不起作用。代碼有什麼問題,以及如何將item2包含在maindiv中?jquery用另一個替換一個div

HTML:

<div class="item2"><a href="#" id="item2">item2</a></div> 
<div class="maindiv"> 
    <div class="item1"> <a href="#" id="item1">item1</a></div> 
</div> 

的jQuery:

if (selection) { 
    if ($('.maindiv').hasClass('item1')) { 
     $('.maindiv').removeClass('item1').addClass('item2'); 
    } 
} 
+1

更好的解決方案。你犯了一個錯誤粘貼代碼,或者這是它是如何看? –

+0

您的問題標題與您在問題中所說的內容並不完全匹配,而且我不確定這只是溝通不暢或對某個班級感到困惑。 –

回答

2

在你的榜樣,.maindiv沒有一個名爲類item1,它有一個 孩子有該類。你正在測試它是否有

您可能需要修改的東西,如:

if($('.maindiv > div').hasClass('item1')) { 
    $('.maindiv > div') 
     .removeClass('item1') 
     .addClass('item2'); 
} 

或者

if($('.maindiv .item1').length > 0) { 
    $('.maindiv .item1') 
     .removeClass('item1') 
     .addClass('item2'); 
} 

...無論你找到更易讀。

+0

這既不移除也不相應地增加 – learning

+0

@學習:我不知道我理解你的反對意見。 [這個例子中的兩個項目都是藍色的?](http://jsfiddle.net/YCqce/)。因爲如果他們是,你會知道他們有'item2'而不是'item1'。 –

0

.hasClass()函數檢查它被調用的元素是否具有該類(在你的情況下它沒有)。它不檢查那些元素是否包含具有該類的元素。

<div class="item1"> and <div class="item2"> are elements,not classes; item1item2是這些元素上的類。您似乎對某個課程的功能以及.hasClass(),.addClass().removeClass()功能的作用感到困惑,因此我建議您回顧並介紹基本知識。

0

$('#maindiv').find('item1'),比你可以連它運氣好,有一個愉快的一天

1

你必須有目標內的div像

$(document).ready(function() { 
     if(selection) { 
      $('.maindiv .item1').removeClass('item1').addClass('item2'); 
    } 

});

-1

使用ID比較像

物品1
<div class = "maindiv"> 
<div id="test" class = "item1" > <a href="#" id="item1">item1</a> </div> 
</div> 

if(selection) 
      {    
       if ($('#test').hasClass('item1')) { 
          $('#test').removeClass('item1').addClass('item2'); 

       } 


      } 
+0

jQuery沒有'.child()'函數。 –

+0

ohh謝謝,所以你可以使用這個ID使用它的最佳方式和準確 –