2

你好我正在制作图片竞赛页面(有不同的规则)

我似乎无法解决这个“问题”

规则是:用户可以为 ONE 图片投票,但不能为他自己的图片投票。他可以取消他的投票,并投票给另一个人。

我有 PHP 来检查所有这些,它工作正常。

类型为 0 就是这种情况

function addVote(pictureID, competitionID, type){
$.post('vote.php', {pictureID:pictureID, competitionID:competitionID, vote:1}, function(data){
    if (data == 'success') {
    $("#comp_voteButton_"+pictureID).text('Remove vote');
    $("#comp_voteButton_"+pictureID).addClass("alreadyVoted");
    $("#comp_voteButton_"+pictureID).attr("onclick", "remVote(" + pictureID + ", " + competitionID + ")")
    if (type == 0){
    $('.button:not(.disabled, #comp_voteButton_'+pictureID+')').text('Only one vote permitted');
    $('.button:not(.disabled, #comp_voteButton_'+pictureID+')').removeClass('alreadyVoted');
            $('.button:not(.disabled)').addClass('.disabled, .red');

    getVote(pictureID, competitionID);
    }else {
        $().toastmessage('showErrorToast', "Error!");
    }
});

}

在同一个文件中:

function remVote(pictureID, competitionID){
$.post('vote.php', {pictureID:pictureID, competitionID:competitionID, vote:0}, function(data){
    if (data == 'success') {
    $("#comp_voteButton_"+pictureID).text('Vote picture');
    $("#comp_voteButton_"+pictureID).attr("onclick", "addVote(" + pictureID +","+competitionID+","+0+")")
    $("#comp_voteButton_"+pictureID).removeClass('alreadyVoted');
    getVote(pictureID, competitionID);
    }else {
        $().toastmessage('showErrorToast', "Error!");
    }
});

}

编辑:如果这样更容易,这是链接:

<a href="javascript:void(0);" class="button blue small" id="comp_voteButton_<?echo $row['ID']?>" onclick="addVote(<?echo $row['ID']?>, <?echo $id?>, <?echo $vote?>)">Vote</a>

我想要什么:在 addVote 上,所有其他按钮都应该设置为 'onclick(remVote(ID, compID))' - 但我不能这样做,因为两个 ID 都没有输入到 addVote 函数中。

我希望你们能得到我的问题(也许这是不可能的,或者必须做出一个奇怪的解决方法) - 但也许有一种很好的方法。

4

2 回答 2

0

如果您在数据值属性或其他内容中包含图片的 ID 会更容易,但您可以在 addVote 函数中执行类似的操作。

$("[id*=comp_voteButton]").each(function (i) {
    $(this).click(function(){
        remVote(pictureID, competitionID);
        var id = this.id.substring(16);
        addVote(id, competitionID);
    }
}
于 2012-12-08T16:24:02.797 回答
0

好吧,我承认这是一个非常奇怪的问题。

但我做了其他事情(感谢您的时间)

我做了什么:在 addVote ...

$('.button:not(.disabled, #comp_voteButton_'+pictureID+')').hide();

然后它会隐藏所有其他按钮,因此用户不会认为他们可以为一张以上的图片投票。然后在 removeVote 部分再次显示所有按钮。

于 2012-12-08T16:17:33.030 回答