2012-12-08 78 views
2

嗨,我是拍圖片的競爭頁(使用不同的規則)jQuery的多對多關係

我似乎無法環繞這個「問題」

規則我的頭是:用戶可以投票給一張圖片,但不是他自己的。 他能夠取消他的投票,並投票給另一個投票。

我有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函數中。

我希望你們得到我的問題(也許這是不可能的,或者一個奇怪的解決方法必須作出) - 但也許有一個漂亮的做法。

+0

因此,您想要設置所有圖片的onclicks以刪除當前選定的投票的問題? – Lincoded

+0

是(這是很簡單的) - 但最困難的部分是,當用戶再點擊按鈕(在另一張照片,應該投票支持圖片,並刪除舊的).. – Pzoco

回答

0

好吧,我承認這是一個混賬奇怪的問題。

但我沒有別的東西來代替(感謝您的時間)

我做了什麼,而不是:在addVote ...

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

然後,它隱藏所有其他按鈕,使用戶獲得了」他們認爲他們可以投票支持多張照片。並在removeVote部分,然後再次顯示所有按鈕。

0

它會更容易,如果你有一個數據值屬性什麼的圖片的ID,但你可以做這樣的事情的addVote函數內。

$("[id*=comp_voteButton]").each(function (i) { 
    $(this).click(function(){ 
     remVote(pictureID, competitionID); 
     var id = this.id.substring(16); 
     addVote(id, competitionID); 
    } 
}