我有一个非常简单的问题,实际上这不是问题,这是修复javascript错误,无论如何,这里是代码:
$(document).ready(function() {
$('#accordion a.item').click(function () {
$(this).addClass('selected');
$(this).removeClass('selected');
$('#accordion li').children('ul').slideUp('slow');
$(this).siblings('ul').slideDown('slow');
});
});
和html:
<ul id="accordion">
<li>
<a href="#" class="item">BANKS</a>
<ul>BLA BLA BLA</ul>
</li>
<li>
<a href="#" class="item">PETROL</a>
<ul>BLA BLA BLA</ul>
</li>
</ul>
当我点击其中一个链接时,“选定”类被添加到其中,但是当我点击另一个链接时,“选定”类没有删除,那可能是什么错误?
谢谢大家的帮助!我真的很感激!
答案 0 :(得分:3)
您不清楚自己要做什么,但看起来您希望将该类添加到所单击的元素中,然后从其所有兄弟删除 < / em>的。您当前的代码将类添加到同一元素并将其删除,最终没有执行任何操作。
你可能想要像
这样的东西$(document).ready(function() {
$items = $('#accordion a.item'); // all the items
$items.click(function () {
$items.removeClass('selected'); // remove class from everything
$(this).addClass('selected'); // add class to clicked item
$('#accordion li').children('ul').slideUp('slow');
$(this).siblings('ul').slideDown('slow');
});
});
答案 1 :(得分:0)
使用ToggeleClass
而不是adClass/ removeClass
方法。
$("Selector").toggleClass('name of class',true); //apply class
$("Selector").toggleClass('name of class',false); //remove class
答案 2 :(得分:0)
$(this)
是您点击的链接,而不是所有链接。您需要删除所有链接的类。
$(document).ready(function() {
$('#accordion a.item').click(function () {
$('#accordion a.item').removeClass('selected');
$(this).addClass('selected');
$('#accordion li').children('ul').slideUp('slow');
$(this).siblings('ul').slideDown('slow');
});
});
答案 3 :(得分:0)
您的函数中的以下行是添加和删除选定的同一元素的类。
$(this).addClass('selected');
$(this).removeClass('selected');
因为您要在 this 引用的元素上添加和删除类,这是当前元素(刚刚单击的元素)。这些将做的是将选定的类添加到单击的元素并立即将其删除。
您需要做的是
1-首先删除从包含它的任何元素中选择的类
2-将所选的类添加到此
引用的当前元素一种方法是
$('#accordion a.selected').removeClass('selected');
$(this).addClass('selected');
希望有所帮助。