如果值相等,则敲除功能

时间:2015-04-21 08:15:30

标签: javascript jquery knockout.js

我试图滚动到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 - 元素,这样我就可以滚动到它。

感谢您的帮助。

1 个答案:

答案 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()}">