knockout.js - 使用 Knockout 在不同的 div 上单击添加/删除类到元素
问题描述
html
<body>
<header>
<a href="#" id="toggle-button">
<img src="img/menu_icon.svg">
</a>
</header>
<main id="wrapper">
<aside id="sidebar-wrapper">
<div></div>
</aside>
<section id="page-content-wrapper">
<div id="map"></div>
</section>
</main>
</body>
我不知道如何使用 Knockout 获得相同的结果描述如下
jQuery
$('#toggle-button').click(function(event){
event.preventDefault();
$("img", this).toggleClass('rotated');
$('#wrapper').toggleClass('menu--visible');
});
我正在使用 css 绑定,但不知道如何将类添加到 #toggle-button 以外的其他元素,就像我在 这里所做的那样。有什么想法/材料/文档可以帮助我吗?
解决方案
您可以使用一个observable
来切换 和 的img
类#wrapper
。你只需要在每次点击时切换 observable 的值。使用css
绑定根据 observable 的值应用和删除类。
var viewModel = {
toggle : ko.observable(false)
}
ko.applyBindings(viewModel);
.rotated{
transform: rotate(90deg);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
<body>
<header>
<a href="#" id="toggle-button" data-bind="click:function(){toggle(!toggle())}">
<img src="https://cdn.xl.thumbs.canstockphoto.com/canstock33334848.jpg" data-bind="css: {rotated : toggle() }">
</a>
</header>
<main id="wrapper" data-bind="css: {'menu-visible' : toggle() }">
<aside id="sidebar-wrapper">
<div></div>
</aside>
<section id="page-content-wrapper">
<div id="map"></div>
</section>
</main>
</body>
推荐阅读
- django - ValueError - 'image' 属性没有与之关联的文件。模板渲染期间出错
- python - 由于模块“datetime”没有属性“fromisoformat”,Convrt daetime stom 时间戳失败
- ios - FCM 令牌不唯一
- python - Python Pandas Regex:在列中搜索带有通配符的字符串并返回匹配项
- java - 在一个简单的 Producer-Consumer 实现中混淆了 synchronized、wait、notifyAll
- node.js - 如何使用 Sequelize 包含多个其他表?
- coldfusion - 在 Application.cfc 上未提及应用程序名称的 ColdFusion 应用程序
- c - 更正 sys_uname 的内联汇编代码
- python - 时间应该在Python中的录音中动态变化
- python - 如何使用 Python 删除特定单词之前的所有单词(如果有多个特定单词)?