jquery用另一个替换一个div

时间:2013-04-02 11:42:12

标签: jquery

在下面,我想删除类“item1”并将类item2添加到maindiv。以下代码无效。代码有什么问题,如何在maindiv中包含item2?

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');
    }
}

5 个答案:

答案 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');
}

......无论你发现哪个更具可读性。

答案 1 :(得分:1)

你必须要像

那样瞄准内部div
    $(document).ready(function() {
       if(selection) {
           $('.maindiv .item1').removeClass('item1').addClass('item2');
     }

});

答案 2 :(得分:0)

.hasClass()函数检查它被调用的元素是否具有该类(在您的情况下它没有)。它不会检查这些元素是否包含具有该类的元素。

<div class="item1"><div class="item2">元素,而不是类; item1item2是这些元素的类。您似乎对类是什么以及.hasClass().addClass().removeClass()函数的作用感到困惑,因此我建议您回过头来介绍基础知识。

答案 3 :(得分:0)

$('#maindiv').find('item1')而且你可以把它好运并祝你好运

答案 4 :(得分:-1)

使用id比较器来获得更好的解决方案,如

  ITEM1
<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');

                }


            }