结合removeClass()和data()来记住哪些元素拥有该类并将其还原
Combining removeClass() and data() to remember which elements had the class and restore it
所以我之前问过类似的问题,但几个小时后,当我尝试使用它时,我无法完全弄清楚如何使用它
$(element).removeClass('active');
$(element).data('removed-class', 'active');
此外,可以使用提取
var removeClass = $(element).data('removed-class');
那么,让它发挥作用的最"干净"的方式究竟是什么呢?
所以基本上,如果我有7个<li>
行,并且随机地有3个<li>
具有类"active"。
现在,如果我执行一个函数,例如用$("li").removeClass("active")
从<li>
中删除所有"活动"类,我现在如何恢复删除该类的相同"活动"<li>
类?
干杯
试试这个,看看它是否符合要求。
var $listItems = $('li','#wrapper');
function clsToData (elements, cls) {
$(elements).each(function(){
var $this = $(this);
if($this.hasClass(cls)){
$this.removeClass(cls).data('removed-class',cls);
}
});
}
function restoreRemovedClasses (elements) {
$(elements).each(function(){
var $this = $(this);
$this.addClass($this.data('removed-class'));
});
}
$('button','#buttons').on('click',function(){
var $this = $(this);
switch ($this.attr('id')){
case "button1":
clsToData($listItems,'active');
break;
case "button2":
restoreRemovedClasses ($listItems);
break;
}
});
http://jsfiddle.net/rA5aF/
$("li").addClass($("li").data('removed-class'));
除了您可能应该针对适当的元素,而不是DOM中的每个li
元素。
相关文章:
- 拥有财产 - 不起作用
- 从技术上讲,是否可以在不拥有页面UI的情况下删除页面UI的某些部分
- 如果没有document.ready(),我怎么能拥有多个javascript函数呢
- 剑道窗口还原在最小化然后还原时不调用调整大小事件
- 请求拥有API终结点
- 我如何才能拥有一个类型为Java.util.Arraylist的javascript对象
- 是否可以在AlloyUI中拥有自定义连接器
- 使用RequiureJS来拥有第三方库的本地实例
- 如何使用jquery combobox拥有不同的最小长度
- 如何在拥有 Ajax 和 CSS 时包含 Java 脚本
- 函数使用 jquery 还原
- jQuery UI-拖放排序和还原
- 如何自动填充我不拥有的其他网站
- 是否可以将一个元素还原为它's上一个位置,而不将该位置作为参数传递
- 如何在AngularJS中正确地拥有多个控制器
- Canceled事件未将RadTextBox还原为初始值
- 如何在同一表单上拥有两种不同类型的日历
- 我可以在React和Redux中发送一个AJAX调用,而不需要操作创建者和还原器吗
- 结合removeClass()和data()来记住哪些元素拥有该类并将其还原
- 为了管理自己的mapDispatchToProps,子组件应该在什么级别上拥有自己的容器(逻辑反应-还原's连接