尽可能寻求一些帮助。
我已经创建了一些jquery代码来完成这项工作,但我感觉有点笨拙,并且想要正确地重构它...
当代码响应用户的点击时,它会在服务器上检查是否允许用户投票,如果是,则通过ajax处理投票,并相应地移动投票。
但是,它目前设置为仅在单击“投票”链接时运行,其中它向投票计数添加一个。当用户点击带有class =“vote down”的链接时,我还想做的是从投票计数中减去1,但我不想再重复相同的代码,为此。
想知道是否还有将所有代码打包到一个函数中,并说“如果点击投票,请添加一个,如果点击投票,则减去一个。
非常感谢
<a href="link class="vote up"> Vote Up </a>
<a href="link class="vote down"> Vote Down</a>
$('body#true .voteUp').click(function(){
// Get the song meaning
$thisLink = $(this);
var idSm = $(this).parents("div:eq(1)").attr("id");
//Validate that user isnt rating their own song meaning
$.getJSON('http://localhost:8500/mxRestore/model/mdl_songs.cfc?method=getRateSm&returnFormat=json&queryformat=column',
{idSm: idSm},
function(data){
var bVoteAllowed = data.ROWCOUNT < 1;
if(bVoteAllowed){
// User can vote
$.getJSON('http://localhost:8500/mxRestore/model/mdl_songService.cfc?method=rateSm&returnFormat=json&queryformat=column',
{idSm:idSm,action:true})
// Change vote accordingly
var totalQuantity = 0;
var quantity = $thisLink.parent().parent().children('.rateValue').text();
quantity = parseInt(quantity);
totalQuantity = quantity + 1;
$thisLink.parent().parent().children('.rateValue').text(String(totalQuantity)).effect("highlight", {}, 3000);
}else {
$thisLink.text("you are not allowed to vote")
}
})
return false
})
答案 0 :(得分:0)
var vote = function(value) {
// ...
};
$('body#true .voteUp').click(function() {
return vote(+1);
});
$('body#true .voteDown').click(function() {
return vote(-1);
});
将...
替换为您已定义的函数的主体。您可以使用传递给vote()
的值来确定是应该投票还是投票。
答案 1 :(得分:0)
$('.voteUp, .voteDown').click(function(){
//do your processing, vote checking etc
if ($(this).hasClass('voteUp')){
//perform vote up action
}
else{
//perform vote down action
}
return false;
});