2012-12-08 5 views
2

안녕 내가 (다른 규칙) 사진 공모전 페이지 내가jQuery를 많은 관계

규칙이 '문제'주위에 내 머리를 정리하고 수없는 것

을 만들고있어 많은입니다 : 사용자 하나의 그림에 투표 할 수는 있지만 자신의 그림에는 투표 할 수 없습니다. 그는 투표를 취소하고 다른 투표를 할 수 있습니다.

나는 모든 것을 확인하기 위해 PHP를 사용하고 있으며 정상적으로 작동합니다.

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!"); 
    } 
}); 

}

편집 : 그게 만드는 경우 다음 링크의 유형은 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!"); 
    } 
}); 

}

입니다 쉽게 :

<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); 
    } 
}