javascript – Knockout.js:使用多个按钮切换多个Dom元素的可见性
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – Knockout.js:使用多个按钮切换多个Dom元素的可见性,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3257字,纯文字阅读大概需要5分钟。
内容图文
![javascript – Knockout.js:使用多个按钮切换多个Dom元素的可见性](/upload/InfoBanner/zyjiaocheng/752/0094699234d64633aa62effaca98aee5.jpg)
我有一个js小提琴(located here),我想模仿使用knockout.js.想法是每个按钮都有一个相应的div标签.如果相应的div标签是可见的,它应该隐藏单击按钮时.否则,它应该如果任何其他非对应的div是可见的,它们应该隐藏然后显示相应的div.我如何使用knockout来模仿这个jQuery版本?淘汰版本的js小提琴是located here.它有效但似乎仍然真的很冗长.似乎应该有办法让它更有活力,减少工作量.非常感谢任何帮助.
<style type="text/css">
.text { background-color: lightgray; }
</style>
<script type="text/javascript">
$(document).ready(function () {
var viewModel = {
showHide1: ko.observable(false),
showHide2: ko.observable(false),
showHide3: ko.observable(false),
toggle1: function () {
this.showHide1(true);
this.showHide2(false);
this.showHide3(false);
},
toggle2: function () {
this.showHide1(false);
this.showHide2(true);
this.showHide3(false);
},
toggle3: function () {
this.showHide1(false);
this.showHide2(false);
this.showHide3(true);
}
};
ko.applyBindings(viewModel);
});
</script>
<div id="text1" class="text" data-bind="if: showHide1">Text 1</div>
<div id="text2" class="text" data-bind="if: showHide2">Text 2</div>
<div id="text3" class="text" data-bind="if: showHide3">Text 3</div>
<br />
<br />
<button id="button1" type="button" data-bind="click: toggle1">Button 1</button>
<button id="button2" type="button" data-bind="click: toggle2">Button 2</button>
<button id="button3" type="button" data-bind="click: toggle3">Button 3</button>
解决方法:
我建议使用一个返回处理程序的函数.我发现它是编写理智的Knockout代码的必备方法.
基本
我们可以简化HTML.它会检查应该显示的内容,我们的按钮是否会改变显示的内容.
<div id="text1" class="text" data-bind="if: showing() === '1'">Text 1</div>
<div id="text2" class="text" data-bind="if: showing() === '2'">Text 2</div>
<div id="text3" class="text" data-bind="if: showing() === '3'">Text 3</div>
<button id="button1" type="button" data-bind="click: show('1')">Button 1</button>
<button id="button2" type="button" data-bind="click: show('2')">Button 2</button>
<button id="button3" type="button" data-bind="click: show('3')">Button 3</button>
我们的ViewModel也得到了简化.首先,我们将其转换为函数,以便更容易扩展.我们的展示只是一个字符串值. show是我们代码的核心.它返回一个设置显示的函数.
这样,我们可以重命名1,2和3中的元素;主要,关于和联系,而不触及JavaScript.
ViewModel = function(){
var self = this;
self.showing = ko.observable('');
self.show = function(what) {
return function(){ self.showing(what); };
}
};
ko.applyBindings(new ViewModel);
过渡动画
要使用jQuery的幻灯片放入/缩小,我们可以使用KnockoutJS文档中的code provided.这是删除了注释的JavaScript代码:
ko.bindingHandlers.slideVisible = {
update: function(element, valueAccessor, allBindingsAccessor) {
var value = valueAccessor(), allBindings = allBindingsAccessor();
var valueUnwrapped = ko.utils.unwrapObservable(value);
var duration = allBindings.slideDuration || 400;
if (valueUnwrapped == true)
$(element).slideDown(duration); // Make the element visible
else
$(element).slideUp(duration); // Make the element invisible
}
};
要将其放入HTML中,只需使用slideVisible替换if绑定即可.
<div id="text1" class="text" data-bind="slideVisible: showing() === '1'">Text 1</div>
<div id="text2" class="text" data-bind="slideVisible: showing() === '2'">Text 2</div>
<div id="text3" class="text" data-bind="slideVisible: showing() === '3'">Text 3</div>
内容总结
以上是互联网集市为您收集整理的javascript – Knockout.js:使用多个按钮切换多个Dom元素的可见性全部内容,希望文章能够帮你解决javascript – Knockout.js:使用多个按钮切换多个Dom元素的可见性所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。