从每个不是(这个)的元素中删除类
RemoveClass from every element that's not (this)
在我的原型中,我有一个控制器,有三个按钮控制三个div。 每个按钮都设置为不同的jQuery选择器,all,eq,even。
一切似乎都运行良好,但是当我从一个切换选项过渡到另一个选项时,上一个选择将延续到下一个选项,而不是从头开始完全重置。 如果我添加一个函数来重置所有div,我的div 不会切换。
我想知道是否有办法从除所选元素之外的每个元素中删除 Class。
感谢任何帮助!
代码如下:这里的原型:http://jsfiddle.net/terra823/L63e3mjL/4/
function clearAll() {
$('#controller .button').removeClass('theSelected');
}
$('#one').on('click', function () {
clearAll();
$('.littleDiv*').toggleClass('theHighlighted');
$(this).toggleClass('theSelected');
});
$('#two').on('click', function () {
clearAll();
$('.littleDiv:eq(1)').toggleClass('theHighlighted');
$(this).toggleClass('theSelected');
});
$('#three').on('click', function () {
clearAll();
$('.littleDiv:even').toggleClass('theHighlighted');
$(this).toggleClass('theSelected');
});
demo
function clearAll() {
$('#controller .button').removeClass('theSelected');
}
$('#one').on('click', function () {
clearAll();
$('.littleDiv').removeClass('theHighlighted').eq(0).addClass('theHighlighted');
$(this).addClass('theSelected');
});
$('#two').on('click', function () {
clearAll();
$('.littleDiv').removeClass('theHighlighted').eq(1).addClass('theHighlighted');
$(this).addClass('theSelected');
});
$('#three').on('click', function () {
clearAll();
$('.littleDiv').removeClass('theHighlighted').eq(2).addClass('theHighlighted');
$(this).addClass('theSelected');
});
只需要加强toogleClass函数。 如果有更优雅的方式来做到这一点,那就太好了。
$("#one").click(function(){
$(this).toggleClass('theHighlighted');
if($("#one").hasClass('theHighlighted')){
$(this).removeClass('theHighlighted');
}
$(this).toggleClass('theSelected');
if($("#one").hasClass('theSelected')){
$(this).removeClass('theSelected');
}
})
您正在调用 toggleClass,但不首先删除该类。因此,在某些情况下,当它应该添加类时,它会删除该类。切换将在没有类时添加类,并在有类时将其删除。通过确保首先删除类,它将按预期添加它。不过,在这一点上,toggleClass 可能应该替换为 addClass,这样它就更具可读性。
这是一个工作示例
http://jsfiddle.net/L63e3mjL/9/
function clearAll() {
$('#controller .button').removeClass('theSelected');
$('.theHighlighted').removeClass('theHighlighted');
}
使用新要求进行编辑:http://jsfiddle.net/L63e3mjL/19/
我将找到一种更电子的方法来执行此操作,但现在我添加了一个变量来跟踪单击了哪个按钮。使用它,我们可以在来自不同按钮时清除,但是如果我们单击相同的按钮,则不会清除并允许 toggleClass 切换div。
编辑2:只是为了好玩,我把它清理成一个函数。 http://jsfiddle.net/L63e3mjL/21/
var current;
var buttons = $('.button');
buttons.click(function(e){
var button = $(this);
var index = button.index();
var divs;
if(current != index) clearAll();
current = index;
if(index == 0) divs = $('.littleDiv*');
else if(index == 1) divs = $('.littleDiv:eq(1)');
else if(index == 2) divs = $('.littleDiv:even');
divs.toggleClass('theHighlighted');
button.addClass('theSelected');
});
- 删除对HTML元素的拖动
- 如何覆盖锚点元素's href目标,并在我点击转到目标javascript时删除其他错误
- 从所有元素中删除HTML5验证
- 如何检查元素的内容是否为空,如果为空,请在jquery中删除该元素
- 从组件状态的数组中删除元素
- angularjs删除动态形式元素中的特殊字符
- Mongoose-在更新中删除数组元素
- 从数组中删除元素的最佳方法是:javascript/jquery
- 删除不起作用的父元素和所有子元素
- 一些元素没有从数组中删除
- 正在尝试删除子元素的最后一个子元素
- JavaScript-如何按类查找元素并删除此类
- 正则表达式条件来删除元素
- Small Javascript从动态表单中删除多个元素的问题
- javascript:在元素删除后停止setInterval
- JQUERY:动态 AJAX 和 html 元素删除
- AngularJS ngRepeat元素删除
- AngularJS & lt; select>使用ng-model和ng-options在元素删除时被破坏
- jQuery UI datetimepicker绑定到错误的输入后DOM元素删除
- 防止 jQuery 在元素删除时取消绑定事件