单独的jQuery是否适用于个人评论?

时间:2013-06-06 作者:Cid Ubaid

到目前为止,我已经设计了此功能,以便在每个评论下方的前端显示评级星:

add_filter( \'comment_text\', \'additional_fields\' );    
function additional_fields ($below) {
  global $comment;    
if(!get_comment_meta( get_comment_ID(), \'rating\', true ) ) {      
$ratsec = \'<form action="\'.get_permalink().\'" method="get" class="comment-form-rating">\';    
$ratsec .= \'<div id="stars1">
<div class="option starr1">1</div>
<div class="option starr2">2</div>
<div class="option starr3">3</div>
<div class="option starr4">4</div>
<div class="option starr5">5</div>
</div>
<div style="clear:both"></div>\';    
    $ratsec .= \'<input type="hidden" name="p" value="\'.get_the_ID().\'"/>\';
    $ratsec .= \'<input type="text" value="" name="rating[\'.$comment->comment_ID.\']" id="rate22" class="fruit-name"/>\';    
    $ratsec .= \'<label for="rating">\'. __(\'Rating\') . \'</label>\';    
  $ratsec .= \'<input type="submit" value="submit" />\';
  $ratsec .= \'</form>\';
  $below = $below .$ratsec;
  return $below;
}
else
$ratsec = "";
$below = $below .$ratsec;
  return $below;
}
并使用以下jQuery脚本:

<script type="text/javascript">
(function($){

   $(document).ready(function() {
    var $option = $(\'.option\');
    var $fruit = $(\'.fruit-name\');
    var $last;
    $option.click(function() {
    $fruit.val(this.innerHTML)
    })
});

})(jQuery);
</script>
现在,当我在其中添加一个悬停动作以使星形变黄时,它将使所有注释中的所有星形变黄,并且当我单击任何星形时,它的值将更新为注释下面的所有字段。

我在这里想要的是让它为每个评论单独工作?比如,如果我为注释id 33按2星,它应该只更改注释id 33字段的颜色和值。并非所有评论。

1 个回复
最合适的回答,由SO网友:Ravinder Kumar 整理而成

将jquery替换为

<script type="text/javascript">
(function($){

   $(document).ready(function() {
    var $option = $(\'.option\');
    var $fruit = $(\'.fruit-name\');
    var $last;
    var parent
    $option.click(function() {
        parent=$(this).parents(\'.comment-form-rating\');
        $(\'.fruit-name\',parent).val(this.innerHTML)
    })
});

})(jQuery);
</script>
您的脚本无法运行,因为.fruit-name 不包含正确的引用变量。

<小时>

Updated

对于调试,请输入代码并检查。

<script type="text/javascript">
    (function($){

       $(document).ready(function() {
        var $option = $(\'.option\');
        var $fruit = $(\'.fruit-name\');
        var $last;
        var parent
        $option.click(function() {
         parent1=$(this).parents(\'.comment-form-rating\');
         parent2=$(\'.option\').parents(\'.comment-form-rating\');
         console.log(parent1);
         console.log(parent2);
         $(\'.fruit-name\',parent1).val(this.innerHTML)
        })
    });

    })(jQuery);
    </script>
在上述代码中,单击任意后.option 类parent1只包含一个值,因为它被引用(所以只更改为一个.fruit-name 类)。但是parent2包含的内容与您的评论一样多(因此更改为all.fruit-name 类别)

结束