我正在尝试实现一个脚本,以在特定元素上设置不同的类名称。
假设dom看起来像这样:
<body class='pre-existing-class-name'>
如果我做
smartToogle('body', 'new-class');
// the dom should look like this
// <body class='pre-existing-class-name new-class'>
smartToogle('body', 'new-class-2');
// the dom should look like this
// <body class='pre-existing-class-name new-class-2'>
我做了下面的代码,但是没有用:
var smartToogle = function (element, newClassName) {
var oldClassName;
var $element = $(element);
$element.addClass(newClassName);
if (oldClassName !== newClassName) {
$element.removeClass(oldClassName);
}
oldClassName = newClassName;
};
要求:
1)我正在使用查询
2)我只想传递一个新的类(class)名称。
解决方案:
以下代码有效,但我不喜欢它,因为它使用了全局变量。
有任何修复建议吗?
function myToggle(newClassName) {
if (window.oldClassName) {
$('body').toggleClass(window.oldClassName);
}
window.oldClassName = newClassName;
$('body').toggleClass(newClassName);
}
最佳答案
您可以为元素使用data属性,该属性可以使用
$(element).data(attrib_name)
您的方法只需要很小的变化
function myToggle(newClassName) {
if (window.oldClassName) {
$('body').toggleClass(window.oldClassName);
}
window.oldClassName = newClassName;
$('body').toggleClass(newClassName);
}
可以替换为
function myToggle(element, newClassName) {
if ($(element).data('oldClassName')) {
$(element).toggleClass($(element).data('oldClassName'));
}
$(element).data('oldClassName', newClassName)
$(element).toggleClass(newClassName);
}
希望这能为您解决。
关于javascript - jQuery中的智能切换类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12910216/