js脚本中无法识别的表达式

Unrecognized expression in js script

本文关键字:识别 表达式 脚本 js      更新时间:2023-09-26

我对js非常陌生,需要一些帮助。这是我的vote.js脚本

 function vote(type, value, image_id) {
   var dataFields = {'type': type, 'value': value, 'image_id': image_id};
   var ThisImageVotes = $("#"+image_id).find('#'+type).html();
   $.ajax({ // Ajax
      type: "POST",
      url: "add_vots.php",
      data: dataFields,
      timeout: 3000,
      success: function(dataBack){
         $("#"+image_id).find('#'+type).html(dataBack); 
           if(type=='positive')
           {
                 $("#"+image_id).find('#voteUp a').replaceWith('<a href="#" onclick="return false;"></a>');
           }
           else if(type=='negative')
           {
                 $("#"+image_id).find('#voteDown a').replaceWith('<a href="#" onclick="return false;"></a>');
           }
         $("#"+image_id).find('#voteUp("#"+image_id).find("#voteUp a")').attr('class', 'vote_up_done oneLine');
         $("#"+image_id).find('#voteDown').attr('class', 'vote_down_done oneLine');
         $("#"+image_id).find('#positive').attr('class', 'numberVoted oneLine');
          $("#"+image_id).find('#negative').attr('class', 'numberVoted oneLine');
         $('#message').html('<div id="alertFadeOut" style="color: green">Your vote is added!</div>');           
         $('#alertFadeOut').fadeOut(3000, function () {
            $('#alertFadeOut').text('');
         });
         },
      error: function() {
         $('#message').text('Error! Please try again!');
      }
   });
}

这个脚本做的是让人们对图像进行投票,当投票完成时,使按钮(拇指向上/向下)灰色即禁用。通常按钮必须在投票完成后立即变为灰色。目前的投票记录到数据库,但按钮不会变成灰色,我可以投票,我想要的。页面刷新后,按钮被禁用。

如果需要,这是HTML部分的页面与图像。

<div id="'.$row['image_id'].'" class="pull-right">
    <div id="lineBlock">Ratings: ';
        if (isset($_COOKIE[$cookie_name])) { 
          echo '<div class="vote_up_done oneLine"></div>
           <div class="numberVoted oneLine">'.$vote['positive'].'</div>';
        } else {
          echo '<div class="vote_up oneLine" id="voteUp"><a href="#" onclick="vote(''positive'', ''1'', '.$row['image_id'].'); return false;"></a></div>
           <div class="number oneLine" id="positive">'.$vote['positive'].'</div>';
        }                       
        if (isset($_COOKIE[$cookie_name])) {
           echo '<div class="vote_down_done oneLine"></div>
                   <div class="numberVoted oneLine">'.$vote['negative'].'</div>';
        } else { 
           echo '<div class="vote_down oneLine" id="voteDown"><a href="#" onclick="vote(''negative'', ''1'', '.$row['image_id'].'); return false;"></a></div>
                 <div class="number oneLine" id="negative">'.$vote['negative'].'</div>';
        }                            
        echo '</div><span id="message"></span>
</div>

控制台错误如下

未捕获错误:语法错误,无法识别的表达式:#voteUp$("#"+image_id)。找到("# voteUp")

有没有人知道为什么按钮不变成灰色(禁用),为什么这个错误?

您需要替换这一行:

$("#"+image_id).find('#voteUp("#"+image_id).find("#voteUp a")').attr('class', 'vote_up_done oneLine');

:

$("#"+image_id).find("#voteUp a").attr('class', 'vote_up_done oneLine');

看起来你有一个严重的错别字。你方报价乱了。

$(function () {
  $(".actions a").click(function () {
    if ($(this).hasClass("disabled"))
      return false;
    $(this).closest(".actions").find(".disabled").removeClass("disabled");
    $(this).addClass("disabled");
    return false;
  });
});
* {padding: 0; margin: 0; list-style: none; font-family: 'Segoe UI'; text-decoration: none; color: #000;}
li {padding: 5px; border: 1px solid #999; width: 200px; border-radius: 3px; margin: 10px;}
li .actions {overflow: hidden; padding: 3px;}
li .actions a {float: right;}
li .actions a:first-child {float: left;}
li .actions a.disabled, li .actions a.disabled i {color: #999;}
<script src="https://code.jquery.com/jquery-1.9.1.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css" />
<ul>
  <li>
    <div class="image"><img src="http://lorempixel.com/200/100/animals/1" alt="" /></div>
    <div class="actions"><a href="#"><i class="fa fa-thumbs-up"></i> Vote Up</a><a href="#"><i class="fa fa-thumbs-down"></i> Vote Down</a></div>
  </li>
  <li>
    <div class="image"><img src="http://lorempixel.com/200/100/animals/2" alt="" /></div>
    <div class="actions"><a href="#"><i class="fa fa-thumbs-up"></i> Vote Up</a><a href="#"><i class="fa fa-thumbs-down"></i> Vote Down</a></div>
  </li>
  <li>
    <div class="image"><img src="http://lorempixel.com/200/100/animals/3" alt="" /></div>
    <div class="actions"><a href="#"><i class="fa fa-thumbs-up"></i> Vote Up</a><a href="#"><i class="fa fa-thumbs-down"></i> Vote Down</a></div>
  </li>
  <li>
    <div class="image"><img src="http://lorempixel.com/200/100/animals/4" alt="" /></div>
    <div class="actions"><a href="#"><i class="fa fa-thumbs-up"></i> Vote Up</a><a href="#"><i class="fa fa-thumbs-down"></i> Vote Down</a></div>
  </li>
  <li>
    <div class="image"><img src="http://lorempixel.com/200/100/animals/5" alt="" /></div>
    <div class="actions"><a href="#"><i class="fa fa-thumbs-up"></i> Vote Up</a><a href="#"><i class="fa fa-thumbs-down"></i> Vote Down</a></div>
  </li>
</ul>

.find应该在引号之外,因为它不是jquery选择器的一部分。'#voteUp'是一个jquery选择器,应该在引号中,而find是一个javascript方法,操作的选择器的结果。