添加和删除类不工作
Adding and removing classes not working
我在另一个div元素上使用了相同的代码,它工作得很好。当我将相同的代码添加到另一个具有不同id的div元素时,它会注册元素已被单击,但它不会添加或删除任何类。
$('#quoteClick').click(function(){
$('#cbox-1').addClass('displayCboxBackground');
$('#cbox-2').removeClass('displayCboxBackground');
$('#cbox-3').removeClass('displayCboxBackground');
$('#dbox-1').addClass('displayBlock');
$('#dbox-2').removeClass('displayBlock');
$('#dbox-3').removeClass('displayBlock');
console.log("clicked");
});
html的结构如下:
<div id="cbox-1">
<div id="dbox-1">
content...
</div>
</div>
<div id="cbox-2">
<div id="dbox-2">
content...
</div>
</div>
<div id="cbox-3">
<div id="dbox-3">
<div id="quoteClick">
a quote
</div>
</div>
</div>
JSFiddle: https://jsfiddle.net/m81c23cx/1/
在页面中,您可以看到当单击每个标题时内容将发生变化。当"quoteClick"元素被点击时,我想让它变成第二个标题的内容,就像第二个标题被点击时一样。
我可以看到在Chrome的控制台,当我点击div元素,它突出显示所有的类,但它不改变他们中的任何一个。我有一个document.ready()
函数内的jQuery,所以它应该等待DOM加载,它工作完美,当我只是写到控制台的行。
我很惊讶居然没有人质疑您对id的使用(而不是建议您应该仔细检查是否存在欺骗)。这段代码难以调试的原因是因为它太复杂了。因此,您将很难在未来修复类似的问题。
放下它,做得更好。我还没看你的小提琴呢。相反,我建议你彻底改变你的方法。更新你的HTML并使用类而不是id。类似这样:
<div class="cbox">
<div class="dbox">
content...
</div>
</div>
<div class="cbox">
<div class="dbox">
content...
</div>
</div>
<div class="cbox">
<div class="dbox">
<div id="quoteAdvert">
a quote
</div>
</div>
</div>
更新你的JavaScript并使用this
来获取当前框的上下文:
$('.cbox').click( function cboxClicked () {
// Remove the previous class from all .cbox & .dbox elements; we don't care which
$('.cbox').removeClass('displayCboxBackground')
$('.dbox').removeClass('displayBlock')
// Add a new class to the clicked .cbox & it's child .dbox
$(this).addClass('displayCboxBackground')
$(this).children('.dbox').addClass('displayBlock')
})
这有什么美妙之处?你可以有1000个盒子,它仍然有效。不需要添加任何额外的代码行。
您提供的示例代码与您创建的jsfile不一致。
在您的小提琴中,您使用jquery选择器$('#quoteClick')
,但没有该id的元素。但是有一个#quoteAdvert元素。更改它,您将在控制台中看到点击。
classList属性返回所讨论元素的class属性的令牌列表。幸运的是,它还提供了一些方便的方法:
- add -添加一个类
- remove -删除一个类
- toggle -切换类
-
contains -检查类是否存在
//添加类"foo"到elel.classList.add("foo");
//从el中移除类"bar"el.classList.remove("酒吧");
//切换类fooel.classList.toggle("foo");
//如果el包含"foo",输出"true"到控制台,如果不包含"false"console.log(el.classList.contains("foo"));
//添加多个类到elel.classList。add("foo", "bar");
- button.单击两次删除附加操作后不工作
- Rails Production-可以工作,但不能编辑/删除/创建记录
- JavaScript-删除last();工作不正常
- javascript代码,用于删除firefox中的空白,但在IE和chrome中无法正常工作
- (X-Editable)与(Select2标签)不工作,可以't填充当前标签并跟踪添加/删除的标签
- 数据表中的FixedHead没有'删除分页后无法工作
- 无论如何都要获取文档.在不删除整个页面的情况下写入即可工作
- 我如何在谷歌工作表中找到一个完整的删除脚本
- .addClass不工作(刷新时被删除)
- domparser删除节点不工作
- appMobi/phonegap设置/删除cookie点击操作需要2次才能工作
- 删除功能不工作angularjs
- 如何删除 settimeOut 的队列工作
- java脚本退格键和删除在IE中工作,而不是在FireFox中工作
- 页面工作线程 - destroy() 似乎没有删除窗口对象
- 删除究竟如何工作
- 使用JS删除损坏的图像框无法正常工作.导轨 4.
- 单击按钮时的多重删除复选框无法按要求工作
- 简单的“删除工作表/插入工作表”脚本上的服务器错误
- 使用 jquery 删除 html 标记无法正常工作