【发布时间】:2015-01-29 11:23:31
【问题描述】:
我有以下代码:
<div id="resultlist" data-bind="foreach: content">
<ul style="list-style-type:none;">
<li>
<div class="result" data-bind="event:{ mouseover:myfunction, mouseout:myFunction2}">
<div class ="resultlisticoncontainer">
<div class="resultcontenttypeIcon myclassHidden" data-bind="css: { myclassVisible: newClass() == true, myclassHidden: newClass() == false }">
<object id="contentIcon" data="img/File_Icon_24x24.svg" type="image/svg+xml" width="100%" height="100%"></object>
</div>
<div class="resultcontenttypeIcon myclassHidden" data-bind="css: { myclassVisible: newClass() == true, myclassHidden: newClass() == false }>
<object id="marple" data="img/Glass_Icon_24x24.svg" type="image/svg+xml" width="100%" height="100%"></object>
</div>
</div>
<p><span data-bind="text: name" class="filenamestlye"></span></p>
<p><span data-bind="text: file_path" class="urlstyle"></span></p>
<p><span data-bind="html: highlight" ></span></p>
</div>
</li>
</ul>
</div>
所以我想要做的是,当我将鼠标放在具有“result”类的 div 上时,具有“resultcontenttypeIcon”类的 div 应该可见。这很好用,但问题是,这发生在使用 foreach 循环创建的每个 div 子项上。所以我想要的是,只有悬停的 div 的 div 子项变得可见,因此不会为每个 div 触发事件 mouseover。我认为问题在于,newClass 值对于整个视图模型都是正确的。
这是我的视图模型代码:
function ItemListViewModel() {
newClass= ko.observable(true);
myfunction = function() {
newClass(true);
},
myFunction2= function(){
newClass(false);
},
}
ko.applyBindings(new ItemListViewModel());
【问题讨论】:
-
您是否考虑过只使用 CSS :hover 类来隐藏/显示结果?它会更简单,更快。
-
谢谢,这就行了。我给了“结果” div :hover .resultcontenttypeIcon {display: block; } style 和 resultcontenttypeIcon 样式显示:无;。因此,如果我将鼠标悬停在“结果”上,则会显示子 div。
标签: javascript html knockout.js