0

在下文中,我想删除类“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');
    }
}
4

5 回答 5

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

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

于 2013-04-02T11:44:04.240 回答
1

您必须像定位内部 div

    $(document).ready(function() {
       if(selection) {
           $('.maindiv .item1').removeClass('item1').addClass('item2');
     }
});
于 2013-04-02T11:48:03.697 回答
0

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

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

于 2013-04-02T11:45:25.807 回答
0

$('#maindiv').find('item1')而不是你可以链接它。

于 2013-04-02T11:47:24.160 回答
-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');

                }


            }
于 2013-04-02T11:51:43.493 回答