1

我创建了一个像这样具有不同行的表,对于评分开始我使用raty

问题表

while ($row = pg_fetch_assoc($rs)) {
    echo "<tr>";
    echo "<td>" . $row['question_id'] . "</td>";
    ...
    echo "<td><div> \r \n <div id=\"score-question" . $row['question_id'] ."\" data-score=\"" . $row['rating'] . "\"></div> \r \n </div> \r \n</td>";
    ...
    echo "</tr>";
}

<script type="text/javascript">
    $(function() {
        $.fn.raty.defaults.path = '../plugins/raty/lib/img';

        $('#score-question1').raty({
            readOnly: true,
            noRatedMsg: "Press edit to change the rating",
            score: function() {
                return $(this).attr('data-score');
            }
        });

        $('#score-question2').raty({
            readOnly: true,
            noRatedMsg: "Press edit to change the rating",
            score: function() {
                return $(this).attr('data-score');
            }
        });

        $('#set-action').on('click', function() {
            var options = $('#set-function-demo').val(),
                    command = "$('#function-demo').raty('set', " + options + ");";
            eval(command);
        });
        $('#destroy-action').on('click', function() {
            $('#function-demo').raty('destroy');
        });
    });
</script>

我使用 javascript 函数来控制星级评分栏。我必须使用不同的名称,因为您不能有两个具有相同名称的 div,但现在我必须为每个评分栏使用单独的函数。是解决此问题的更好方法吗?我对 javascript 没有任何经验,所以这可能是一个初学者的问题

4

2 回答 2

7

不是name,它id必须是独一无二的;)

id你可以使用属性来代替class你想要的每个 div,然后在 jQuery 中使用它,如下所示:

$('.ratyClass')
于 2013-09-13T10:33:21.157 回答
3

只是为了详细说明:

$('.ratyClass').raty({
            readOnly: true,
            noRatedMsg: "Press edit to change the rating",
            score: function() {
                return $(this).attr('data-score');
            }
        });

当您使用 $(this) 时,它仅作用于调用该函数的对象,不会影响其他$('.ratyClass')对象。

一点阅读可能会让事情更清楚: http ://www.quirksmode.org/js/this.html

于 2013-09-13T10:46:41.713 回答