jQuery toggle()-为活动元素添加和删除类
jQuery toggle() - adding and removing class for active element
当前,我正在使用以下代码段:
$('.element-block').click(function(){
$(this).siblings(".key-element").toggle();
$('.background-area').removeClass("active_bg");
$(this).parent('.background-area').addClass("active_bg");
});
我有DIV
元素的列表。在该块中,当我单击.element-block
时,jQuery
函数toggle()显示所需区域,如果我再次单击,toggle将其隐藏,并且我正在向该区域添加背景色。
这工作得很好,例如:我点击.block-element
-数据出现+背景颜色改变。然后我点击B .block-element
-数据出现+背景颜色改变。凉的
但是,如果我单击A .block-element
-数据出现+背景色更改,然后如果我再次单击,A .block-element
-数据将被隐藏,但背景色不会更改。
如何解决此问题?
这是因为您总是在添加类。您可以事先检查是否只想删除它或同时添加它:
var $active_bg = $('.background-area.active_bg').removeClass("active_bg");
var $bg = $(this).parent('.background-area');
// Only add the class if the current background didn't have the class
if ($bg[0] !== $active_bg[0]) {
$bg.addClass("active_bg");
}
上述代码只允许一个.background-area
元素处于"活动"状态。如果可以有多个,您可以将代码简化为:
$(this).parent('.background-area').toggleClass("active_bg");
相关文章:
- JQuery添加元素需要在我的js之前再次添加JQuery脚本
- 如何使用jquery遍历具有动态添加元素的数组
- jQuery appendTo 替换元素而不是添加元素,如果正在添加的元素预先存在于列表中
- 如何使用jquery添加元素
- 动态添加元素上的 HammerJS
- CSS没有'使用javascript向页面动态添加元素时无法工作
- 使用Javascript在DOM元素中添加元素
- 在添加元素时激发JS事件
- 什么's是在IE8+中添加元素的最有效方法
- d3.js在添加元素时协调
- 使用路由器链接动态添加元素
- 动态添加元素
- 在页面内容完全加载后,使用jQuery在DOM中添加元素
- j查询绑定单击不添加元素
- 在循环 jQuery 上添加元素
- 从一个页面调用 javascript 函数以在第二个页面上添加元素
- 页面加载后向<正文>添加元素时出现问题
- 动态添加元素时刷新 HTML
- 动态添加元素时不触发 JQuery 事件
- 如何使用 JavaScript 获取动态添加元素的宽度