我在我的网站上使用了一个词汇表,它利用了一些显示/隐藏功能和一个.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类别".glossaryUL”设置为"selected“。
<li id="a-link" class="selected">A</li>
当您单击另一个字母时,将显示".glossary-content“类中的术语,但.removeClass属性不会从字母"A”中删除该类。
但是,如果您随后单击了另一个字母(页面加载后的第二次单击),则.removeClass属性将运行并移除该类,并将其应用于正确的字母...
我不明白它为什么要这样做。
任何帮助都是非常感谢的。
发布于 2013-01-30 05:41:23
您不需要将单击事件分配包装到each
中,jQuery已经为匹配该选择器的每个元素分配了click
事件(因为您使用了一个类作为选择器)。我怀疑你有重复的点击事件冲突。试着这样做:
$(".glossaryUL li").click(function() {
$(".glossaryUL li").removeClass("selected");
$(this).addClass("selected");
elementClick = $(this).attr("id");
});
});
https://stackoverflow.com/questions/14592719
复制相似问题