0

谢谢阅读。

我正在努力改进,所以我正在做一个示例项目来改进。我做了一个简单的。投票系统。我有许多由 php 显示的内容,每个都有向上或向下投票按钮。顺便说一句,我使用 twitter 引导程序。

这是html代码:

<html>
<button type="submit" class="btn btn-mini upvote" id="'.$data['ContentID'].'">
    <i class="icon-arrow-up"></i>
</button>

    <span id="voteresponse">'.$data['VoteSum'].'</span>

<button type="submit" class="btn btn-mini downvote" id="'.$data['ContentID'].'">
    <i class="icon-arrow-down"></i>
</button>
</html>

问题是当我舔按钮时,class="upvote"所有其他按钮都做同样的事情。因为由php填充的数据有很多。

这是我的 JavaScript。

<script>
jQuery(document).ready(function($){

              $('.upvote').click( function(event) {

              event.preventDefault();

              $("#voteresponse").html('');
              var voteID = $(".upvote").first().attr("id");

                $.ajax({
                  url: "/ajax.php?Page=votetitle",
                  type: "post",
                  dataType: "json",
                  data: {id : voteID},
                  success: function(data, textStatus){
                    if(data.success == 'true'){
                      $('#voteresponse').html(data.message);
                      return true;
                    }else{
                      $('#voteresponse').popover({
                        title: 'Hata!',
                        content: data.message 
                      });
                    }
                  },
                  error:function(){
                      $('#voteresponse').popover({
                        title: 'error!',
                        content: 'Server error' 
                      });
                  }
                }); 
              });
            });
</script>

并且 php 代码只是通常的数据库请求。

<?php

if ( $_SESSION['UserID'] <1 )
    die( print_r(json_encode(array('success'=>'false', 'message'=>'error for user!')))     );

    print_r(json_encode(array('success'=>'true', 'message'=>$_POST['id'])))

?>

你可以在这里看到动作。如果您单击其中一个,则所有其他向上箭头都会做同样的事情。这种方法也对吗?

谢谢。最好的祝福

4

2 回答 2

3

当您单击其中任何一个时,只有第一个“响应”......这可能是因为var voteID = $(".upvote").first().attr("id");voteID 应该是类似的东西$(this).attr('id');

请注意,您需要识别单击了哪个按钮,例如,您可以使用$(this).parent()... 这将为您提供被单击按钮 (div media isotope-item) 的上 DOM 级别,从那里您只能修改该 div 的内容。

于 2013-05-01T13:28:04.823 回答
3

尝试改变

var voteID = $(".upvote").first().attr("id");

对此

var voteID = $(this).first().attr("id");

或者

var voteID = $(this).attr("id");
于 2013-05-01T13:29:14.033 回答