-1

我曾尝试使用两个酒吧评级插件,其中一个在这里找到:另一个在这里。使用第一个列出的评级插件,当我将鼠标悬停在星星上时,它们根本不起作用(意味着所选星星的颜色不会改变),而在 KnockoutJS 循环中,如果在外面,它工作得很好。示例代码:

<ul data-bind="foreach: articles">    
    <li>
        <input type="radio" name="1" class="star" />
        <input type="radio" name="1" class="star" />
        <input type="radio" name="1" class="star" />
        <input type="radio" name="1" class="star" />
        <input type="radio" name="1" class="star" />

        <script type="text/javascript">
            $(function(){ // wait for document to load
                $('input.star').rating();
            });                 
        </script>
    </li>
</ul>
<!-- Works -->

我的 CSS 已设置,我什至尝试将插件激活脚本移动到循环内部/外部,但什么也没有。

编辑 我想问题是,如何在生成新内容后将插件重新应用到 KnockoutJS?

4

1 回答 1

0

问题是插件在 KnockoutJS 在页面上呈现元素之前运行。正如我发现的那样,解决这个问题的方法是检查元素何时设置,然后重新附加插件。

这应该添加到循环中。

foreach: { data: articles, afterRender: rating_bind } //rating_bind is the function that will map the plugin to the new elements.
于 2015-01-30T21:12:29.003 回答