1

我在我的网站上使用了一个词汇表,它利用了一些显示/隐藏功能和一个 .removeClass 属性。

$(document).ready(function() {
    $("#glossary-container li").click(function() { 
        $(".glossary-content > div").hide();
        var id = $(this).attr("id").replace('-link', ''); 
        $('#' + id).show(); 

        $(".glossaryUL li").each(function() { 
            $(this).click(function() {
                $(".glossaryUL li").removeClass("selected");                       
                $(this).addClass("selected"); 
                elementClick = $(this).attr("id"); 
            });
        });
    }); 

    $('.coolbox').hide(); 

    $('.clicker').click(function(event){ 
        event.preventDefault(); 
        $($(this).attr('href')).toggle(300); 
    });
});

在页面加载时,列表项字母“A”UL lass“.glossaryUL”通过内联样式设置为“选定”。

<li id="a-link" class="selected">A</li>

当您单击另一个字母时,将显示类“.glossary-content”中的术语,但 .removeClass 属性不会从字母“A”中删除该类。

但是,如果您随后单击另一个字母(页面加载后第二次单击),.removeClass 属性将起作用并删除该类并将其应用于正确的字母...

我不知道为什么要这样做。

任何帮助是极大的赞赏。

4

1 回答 1

2

您不需要将 click 事件分配包装到 中each,jQuery 已经为与该选择器匹配的每个元素分配了click事件(因为您使用了一个类作为选择器)。我怀疑你有重复的点击事件冲突。试试这个:

$(".glossaryUL li").click(function() { 
        $(".glossaryUL li").removeClass("selected");                       
        $(this).addClass("selected"); 
        elementClick = $(this).attr("id"); 
    });
});
于 2013-01-29T21:41:23.377 回答