jQuery投票系统

Bot*_*Bot 4 javascript php jquery voting-system

所以我正在建立一个投票系统,基本上是一个Thumbs Up&Thumbs Down投票系统.我使用CakePHP和jQuery与MySQL,但要确保前端是正确的,这是做到这一点的最好办法.

我希望用户能够改变他们的投票,所以利用jQuery这是最好和最有效的方式吗? 在类操作方面,我对jQuery很新手.

ID字段将是用户将投票的照片的唯一ID.这当然只是一个测试,这不会是生产中的最终产品.页面上会有多张照片,用户对每张照片进行Up或Down投票.

这是代码.

<?php
echo $javascript->link('jquery/jquery-1.4.2.min',false);
?>
<script type="text/javascript">
    $(document).ready(function() {
        $('.vote').click(function () {
            if ($(this).hasClass("current")) {
                alert("You have already voted for this option!");

                return;
            }
            var parentId = $(this).parent("div").attr("id");
            if ($(this).hasClass("up")) {
                //Do backend query and checking here
                alert("Voted Up!");
                $(this).toggleClass("current");
                if ($("#" + parentId + "-down").hasClass("current")) {
                    $("#" + parentId + "-down").toggleClass("current");
                }
            }
            else if($(this).hasClass("down")) {
                //Do backend query and checking here
                alert("Voted Down!");
                $(this).toggleClass("current");
                if ($("#" + parentId + "-up").hasClass("current")) {
                    $("#" + parentId + "-up").toggleClass("current");
                }
            }



        });
    });
</script>
<div id="1234">
    <a id="1234-up" class="vote up" >+</a> | <a id="1234-down" class="vote down" >-</a>
</div>
Run Code Online (Sandbox Code Playgroud)

Use*_*234 5

你可以这样做:

<script type="text/javascript">
    $(document).ready(function() {
        $('.vote').click(function () {
            if ($(this).hasClass("current")) {
                alert("You have already voted for this option!");
            } else {
                var parentId = $(this).parent("div").attr("id");
                var error = false;

                if ($(this).hasClass("up")) {
                    //Do backend query and checking here (SET: error)
                    alert("Voted Up!");
                }
                else if($(this).hasClass("down")) {
                    //Do backend query and checking here (SET: error)
                    alert("Voted Down!");
                }
                //removes all the votes 
                $(this).parent("div").children().removeClass("current");

                if(!error) {
                    $(this).addClass("current");
                } else {
                    alert("There was an error");
                }
            }
            return false;
        });
    });
</script>
<div id="1234">
    <a class="vote up" href="#">+</a> | <a class="vote down" href="#">-</a>
</div>
Run Code Online (Sandbox Code Playgroud)

它不需要额外的html id,你不需要加倍的代码来添加当前的类.我不确定哪个更快,但我认为这样可以更好地维护代码.