【发布时间】:2014-11-07 22:05:33
【问题描述】:
我有一系列自定义 Chevron 元素,将用作我网站上的按钮。我设法设置了 jQuery,以便为单击的 V 形/按钮提供 class="selected" 然后我使用它来添加自定义样式。如果我单击任何其他 V 形,则选定的类将从第一个 V 形删除并添加到最后一个被单击的 V 形。所有这一切都很好。我有另一个链接,可以单击以从所有 V 形中删除该类。我现在要做的是在 jQuery 上启用 .toggle(Class) 功能,这样我还可以通过单击相同的元素两次来删除 class="selected" 。
我的 jQuery 代码:
$(function () {
$('#chevrons > ul > li > a').click( function(){
$('#chevrons .selected').removeClass('selected');
$('#show-all').removeAttr("style");
$(this).toggleClass('selected');
});
});
$(function () {
$('#show-all').click( function(){
$('#chevrons .selected').removeClass('selected');
$(this).css('color', '#FECF2A');
});
});
我试过不带行的切换:
$('#chevrons .selected').removeClass('selected');
$('#show-all').removeAttr("style");
而且效果很好。我假设(可能是错误的)jQuery 会逐行执行,因此是最后要执行的事情。但也许上面的第一行是从所有 V 形中删除“选定”属性,然后最后一行只会添加该类。
我在这里做错了什么?
【问题讨论】:
-
你能为这段代码提供jsfiddle吗
-
我不确定,但也许通过这样做
$('#chevrons .selected').removeClass('selected');您不再允许该 jQuery 选择器选择该 chevron,也许更改为$(this).removeClass('selected');将修复它... -
感觉
removeClass('selected')和toggleClass('selected')可能有冲突,因为它们针对的是相同的元素。 -
是的,如果您首先删除所有
selected类,则当前元素不能拥有该类,因此.toggleClass()将始终只添加它。您需要将功能一分为二并仅在元素还没有该类的情况下添加该类。 -
谢谢@Juhana,我想可能是这样。知道我如何将它一分为二吗?
标签: javascript jquery html