多个具有相同名称的div

时间:2013-09-13 10:31:15

标签: javascript php

我创建了一个包含不同行的表格,因为评分开始我使用raty

Table of questions

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没有任何经验,所以这可能是一个初学者问题

2 个答案:

答案 0 :(得分:7)

不是name,而是id必须是唯一的;)

您可以对所需的每个div使用id属性,而不是使用class,然后在jQuery中使用它,如下所示:

$('.ratyClass')

答案 1 :(得分: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