jQuery - 根据元素ID删除一个类

时间:2011-08-10 15:56:05

标签: javascript jquery

我正在尝试从列表中删除具有特定ID的.hideme类 - click事件在另一个列表中。根据您单击的UL.tab,显示或删除相应的ul.lineup类.hideme。 HTML看起来像这样:

    <ul class="tab">
        <li id="0">
            <a href="#">26/08/2011</a>
        </li>
        <li id="1">
            <a href="#">27/08/2011</a>
        </li>
        <li id="2">
            <a href="#">28/08/2011</a>
        </li>
    </ul>

    <ul id="0" class="lineup hideme">
       <li>...</li>
    </ul>

    <ul id="1" class="lineup hideme">
       <li>...</li>
    </ul>

    <ul id="3" class="lineup hideme">
       <li>...</li>
    </ul>

7 个答案:

答案 0 :(得分:1)

首先修复一些HTML / CSS错误。 HTML / CSS中的ID值不能以数字开头。另请注意,整个页面中只能有一个具有给定id值的对象。你有重复。那样不行。在使用这些ID的任何选择器操作可靠之前,您必须修复这两个问题。

如果您有一个ID,并且想要从该特定对象中删除一个类,则可以使用:

$("#myID").removeClass("classToRemove");

如果您尝试从该ID的所有后代中删除该类,则可以使用此:

$("#myID .classToRemove").removeClass("classToRemove");

这将创建一个选择器对象,其中包含具有classToRemove的所有myID后代,然后从每个后代中删除它。

答案 1 :(得分:1)

您可以删除id并简单地依赖元素的索引:

$('.tab li a').click(
    function(){
        i = $(this).closest('li').index();
        $('ul.lineup').eq(i).toggleClass('hideme');
        return false;
    });

JS Fiddle demo

参考文献:

答案 2 :(得分:0)

$("#certainId").removeClass("className");

上面显示的代码也有两个错误:

  1. 页面上不应包含多个特定ID。例如,拥有两个#foo的ID将是无效的HTML。

  2. ID和类不应以数字开头。

答案 3 :(得分:0)

尝试:

$("ul.tab > li > a").click(function ()
{
    $("ul#" + $(this).parent().attr('id')).removeClass("hideme");
}

另外,正如Shaz所说,你不能拥有重复的ID,或者以数字开头的ID。

答案 4 :(得分:0)

此方法可以帮助您,但您应该考虑ID应该是唯一的。

$('ul.tab a').click(function(){
   $('ul#'+this.parent().attr('id')).toggleClass('hideme');
});

答案 5 :(得分:0)

<ul class="tab">
    <li id="li_c0">
        <a href="#">26/08/2011</a>
    </li>
    <li id="li_c1">
        <a href="#">27/08/2011</a>
    </li>
    <li id="li_c2">
        <a href="#">28/08/2011</a>
    </li>
</ul>

<ul class="lineup hideme c1">
   <li>...</li>
</ul>

<ul class="lineup hideme c2">
   <li>...</li>
</ul>

<ul class="lineup hideme c3">
   <li>...</li>
</ul>


$("ul.tab li a").click(function(){

    $(".hideme").hide();
    $(".hideme." + this.parentNode.id.split("_")[1]).show();

});

我就是这样做的。

http://jsfiddle.net/RVtYe/

答案 6 :(得分:-1)

试试这个,作为旁注,ids永远不应该以数字开头。

$("ul.tab a").click(function ()
{
    $("#" + $(this).parent().attr('id')).removeClass("hideme");
});