我试图滚动到ul
内的一个元素,这是一个用淘汰赛制作的。如果条件为真,则应将Div滚动到元素。
我的代码是:
<div id="container">
<table>
<tbody data-bind="foreach: sequence">
<tr>
<td>M<span data-bind="text: $index"></span></td>
<td>
<ul data-bind="foreach: $data" class="verticalList">
<li data-bind="css: {activeElement: $index()==simulator.activeIndex() && $parentContext.$index() ==simulator.machineIndex()}">
<span >⊢</span>
<span data-bind="text: $data.string, css: {some Condition}"></span>
</li>
</ul>
</td>
</tr>
</tbody>
</table>
</div>
我想要的是:
应该能够在li
if $ parentContext上调用一个函数。$ index()== simulator.machineIndex()给我li
- 元素,这样我就可以滚动到它。
感谢您的帮助。
答案 0 :(得分:0)
我认为custom binding handler是你正在寻找的:
ko.bindingHandlers.elementScroller = {
update: function(element, valueAccessor, allBindings) {
// First get the latest data that we're bound to
var value = valueAccessor();
// Next, whether or not the supplied model property is observable, get its current value
var active = ko.unwrap(value);
if (active) {
// Now scroll some diff to this element
$('#someScrollingDiv').animate({top: $(element).position().top});
}
}
};
在你的HTML中:
<li data-bind="elementScroller: $index()==simulator.activeIndex() && $parentContext.$index() ==simulator.machineIndex(), css: {activeElement: $index()==simulator.activeIndex() && $parentContext.$index() ==simulator.machineIndex()}">