2013-04-02 108 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使用它的最佳方式和准确 –