javascript-将类移除到拥有它的元素
我正在寻找此jquery代码的纯javascript替代品:javascript-将类移除到拥有它的元素,javascript,class,removeclass,Javascript,Class,Removeclass,我正在寻找此jquery代码的纯javascript替代品: $().evt(function(){ $('.class').removeClass('active'); $(this).addClass('active'); }) 这就是我努力的方式 node.addEventListener('contextmenu', function(e){ e.preventDefault(); var currentActive =
$().evt(function(){
$('.class').removeClass('active');
$(this).addClass('active');
})
这就是我努力的方式
node.addEventListener('contextmenu', function(e){
e.preventDefault();
var currentActive = document.querySelectorAll('.active');
alert(currentActive.length);
currentActive.className = '';
this.className = 'active';
});
小提琴:
但是当前活动类未被删除您需要以
文档的形式访问正确的节点。querySelectorAll
返回一个节点列表
试试这个
node.addEventListener('contextmenu', function(e){
e.preventDefault();
var currentActive = document.querySelectorAll('.active');
if(currentActive[0]) { // first item with class 'active'
currentActive[0].className = '';
}
this.className = 'active';
});
更新的fiddle:尝试从特定元素列表中删除任何类:
var removeClassName = 'active';
var classes = element.className.match(/\S+/g);
var ind = classes.indexOf(removeClassName);
if (ind >= 0)
classes.splice(index, 1);
element.className = classes.join(' ');
试试这个:
node.addEventListener('contextmenu', function(e){
e.preventDefault();
var currentActive = document.querySelectorAll('.active');
for (var i = 0; i < currentActive.length; i++) {
currentActive[i].classList.remove('active');
}
this.className += ' active';
});
node.addEventListener('contextmenu',函数(e){
e、 预防默认值();
var currentActive=document.querySelectorAll('.active');
对于(var i=0;i
这将仅从这些节点中删除活动的类。尝试以下操作:
var node = mainNodes[i];
node.addEventListener('contextmenu', function(e){
e.preventDefault();
var currentActive = document.querySelectorAll('.active');
for (element in currentActive) {
element.className = element.className.replace(' active', '');
}
e.target.className += ' active';
在事件处理程序的上下文中,这将链接到匿名函数。改用e.target
此代码将删除所有元素上的.active类,并将该类添加到事件目标。其他答案只适用于本课程的第一个元素,这是你想要的吗
更新的fiddle:你所说的
$().evt(function(){})是什么意思?.evt()
替换哪个事件处理程序?您的意思是.contextmenu()
?如果只修改第一项,为什么要使用querySelectorAll
。只要querySelector
就行了。@tonimichelcaubit:您应该始终接受通过单击绿色勾号解决问题的答案。谢谢