jQuery .addClass没有在$(this)上执行

时间:2012-10-01 20:43:02

标签: javascript jquery html addclass

我正在尝试更改列表项,当用户单击所选类更改为单击的项时。我有这段代码:

$(function() {
    $("a.product-page li").click(function(){
        $(this).parent("a").addClass("selected-page");
        $("#options a.selected-page").removeClass("selected-page");
    });
});

但是,removeClass不起作用,但addClass没有。

这是Site

HTML:

<ul id="options">
    <a href="#summary" id="summary" class="product-page selected-page"><span></span><li>Summary</li></a>
    <a href="#specs" id="specs" class="product-page"><span></span><li>Specs</li></a>
    <a href="#media" id="media" class="product-page"><span></span><li>Media</li></a>
    <a href="#reviews" id="review" class="product-page"><span></span><li>Reviews</li></a>
</ul>

CSS:

ul#options {
    margin-left:0px;
}

ul#options li{
    list-style:none;
    padding: 10px 20px;
    background: #CCC;
    border-top: 1px #999 solid;
    border-left: 1px #999 solid;
    border-right: 1px #999 solid;
}

ul#options a{
    display:block;
    border:none !important;
}

ul#options a.selected-page span{
    position:absolute;
    width:0px;
    height:0px;
    border-width:10px;
    border-color:transparent #999999 transparent transparent;
    border-style:solid;
    margin-left:270px;
    margin-top:11px;
}

ul#options a:last-child li {
    border-bottom:1px #999 solid;
}

4 个答案:

答案 0 :(得分:7)

这是因为你立即删除了这门课程。翻转这两行,它就会起作用。

$(function() {
    $("a.product-page li").click(function(){
        $("#options a.selected-page").removeClass("selected-page");
        $(this).parent("a").addClass("selected-page");
    });
});

如上面的评论中所述,您的HTML也非常不正确。这需要修复。

答案 1 :(得分:2)

您正在添加该类,然后在下一行中删除。

这里的订单

$(this).parent("a").addClass("selected-page");
$("#options a.selected-page").removeClass("selected-page");

不正确。

答案 2 :(得分:2)

  • 您应该在<a>标记中包含li链接标记,如下所示

<强> HTML:

<ul id="options">
    <li><a href="#summary" id="summary" class="product-page selected-page"><span></span>Summary</a></li>
    <li><a href="#specs" id="specs" class="product-page"><span></span>Specs</a></li>
    <li><a href="#media" id="media" class="product-page"><span></span>Media</a></li>
    <li><a href="#reviews" id="review" class="product-page"><span></span>Reviews</a></li>
</ul>
  • 您正在删除刚刚添加的课程。您可以将删除类移到addclass上方,或者只是在删除时使用不排除..

<强>代码:

$(function() {
    $("a.product-page", $('#options')).click(function(){
        $(this).addClass("selected-page");
        $("#options a.selected-page").not(this).removeClass("selected-page");            
    });
});

答案 3 :(得分:1)

反转行

    $(this).parent("a").addClass("selected-page");
    $("#options a.selected-page").removeClass("selected-page");