我使用django创建一个网站。我只是写一个投票页面,当人们点击时,它会通过jquery ajax发布数据。 这是代码
<!doctype html>
<html>
<head>
<script src="jquery-1.10.2.min.js"></script>
<meta charset="utf-8">
<title>vote</title>
</head>
<body>
<script language="javascript" type="text/javascript">
$(function(){
$(".post_up").click(function(){
$.ajax({
url:"/article/{{post.id}}/vote_up/",
type:'post',
success:function(msg){
var beforevote = $(".btn").text();
if (msg==0){
$(".pop_up_vote").empty().text("thanks,i get your vote!").show(300).delay(7000).hide(300);
};
if (msg==1){
$(".pop_up_vote").empty().text("you already voted,do not need vote again").show(300).delay(7000).hide(300);
};
})
})
</script>
<a href="javascript:" class="btn_gray_light post_up"><span><i class="icon_add"></i>vote</span></a>
<div class ="pop_up_vote" >
</div>
</body>
</html>
一切运作良好,我刚刚发现了问题。我不能停止反复点击投票。
如果我反复点击
<a href="javascript:" class="btn_gray_light post_up"><span><i class="icon_add"></i>vote</span></a>
它重复显示pop_up消息,“我已投票,不再投票。”
所以我想,我可以通过删除类post_up
来解决问题,这样,人们就无法激活ajax post功能
所以我添加 $(this).removeClass();
$(function(){
$(".post_up").click(function(){
$(this).removeClass();
$.ajax({
url:"/article/{{post.id}}/vote_up/",
type:'post',
success:function(msg){
var beforevote = $(".btn").text();
if (msg==0){
$(".pop_up_vote").empty().text("thanks,i get your vote!").show(300).delay(7000).hide(300);
};
if (msg==1){
$(".pop_up_vote").empty().text("you already voted,do not need vote again").show(300).delay(7000).hide(300);
};
})
})
当我删除课程时,我仍然遇到有关ajax的问题。我怎么能解决它?
答案 0 :(得分:2)
试试这个:http://api.jquery.com/one/。
$('.post_up').one('click', function () {
完成Ajax后,您可以重新绑定相同的处理程序:
$('.post_up').one('click', function handler() {
var el = this;
$.ajax({
url: '/article/{{post.id}}/vote_up/',
type: 'post',
success: function (msg) {
$(el).one('click', handler);
答案 1 :(得分:1)
我认为问题是已经为链接设置了行为,因此删除该类将不会执行任何操作
试试这个
$(".post_up").unbind("click");