我现在有两个按钮作为例子。这里的问题是,当我点击按钮A时,例如它会用“data-accent-switcher”的值更改html文档上的类,在这种情况下是蓝色的,但是当我再次按下按钮A时,它会用按钮B的值更改,按钮b也会发生同样的情况。现在即使我在按钮A上按了20次,我总是希望从data属性(data-accent-switcher)中获得值。
我怎样才能使它成为可能?
<button class='ipsButton accentSwitcher' data-accent-switcher="blue">Button A</button>
<button class='ipsButton accentSwitcher' data-accent-switcher="yellow">Button B</button>
<script type="text/javascript">
$(document).ready(function() {
$('.accentSwitcher').on("click", function() {
var accentValue = $(this).data('accent-switcher');
if (document['documentElement']['classList']['contains']('accent-blue')) {
document['documentElement']['classList']['remove']('accent-blue');
document['documentElement']['classList']['add']('accent-yellow');
} else {
if (document['documentElement']['classList']['contains']('accent-yellow')) {
document['documentElement']['classList']['remove']('accent-yellow');
document['documentElement']['classList']['add']('accent-blue');
}
}
ips['utils']['cookie']['set']('ipsTheme_type', accentValue, true)
});
});
</script>
我尝试过if语句,但显然我错了,不起作用。
3条答案
按热度按时间liwlm1x91#
我建议使用以下方法,并在代码中添加解释性注解:
JS Fiddle demo。
由于OP希望继续使用jQuery,我在下面添加了jQuery选项,这在代码中也有解释性注解:
JS Fiddle demo。
参考文献:
[attribute]
selectors。box-shadow
。display
。hsl()
。justify-content
。linear-gradient()
。place-content
。repeating-linear-gradient()
。data-*
attributes。Array.from()
。Array.prototype.map()
。document.querySelectorAll()
。Element.classList
。Element.closest()
。Event
。EventTarget.addEventListener()
。HTMLElement.dataset
。NodeList.prototype.forEach()
。addClass()
。css()
。closest()
。data()
.get()
。map()
。on()
。removeClass()
。lyr7nygr2#
所以感谢@DavidThomas,我用了他的代码,想出了这个
我希望这是正确的。但我不确定这个
$(this).closest(document.documentElement)
guykilcj3#
谢谢你的提问,我想你可以做到的,就像这样。
我希望我的解决方案能帮助到你。