2013-09-24 122 views
0

我有以下jQuery代碼,它不會被觸發所需的操作,當我拿出第一個2 $("body").on函數,第三個即ie。 ($("body").on("click", '.upvote', function(event){)被觸發。當我把所有東西都放回沒有任何作用時。事件處理程序沒有被觸發

$(document).ready(function() { 
    //function 1 
    $("body").on("change", '.select', function (event) { 
     $('.row.replace').empty(); 
     $('.row.replace').append("<br><br><br><br><p align='center'><img id='theImg' src='/media/loading1.gif'/></p><br><br><br><br><br><br><br><br>"); 
     var filter = $(this).find(":selected").attr("name"); 
     $.ajax({ 
      type: "POST", 
      url: "/filter_home/" + filter + "/" + "TrendingNow" + "/", 
      data: { 
       'name': 'me', 
       'csrfmiddlewaretoken': '{% csrf_token %}' 
      }, 
      //dataType: "json", 
      success: function (data) { 
       $('.row.replace').html("mem"); 
      }, 
      error: function (xhr, errmsg, err) { 
       alert(err); 
      } 
     }); //end ajax 
     return false; 
    }); //end onchange 

    //function 2 
    $("body").on("click", '.sorter', function (event) { 
     $('.row.replace').empty(); 
     $('.row.replace').append("<br><br><br><br><p align='center'><img id='theImg' src='/media/loading1.gif'/></p><br><br><br><br><br><br><br><br>"); 
     var sort = $(this).attr("name"); 
     var filter = $('.select').find(":selected").attr("name"); 
     $.ajax({ 
      type: "POST", 
      url: "/filter_home/" + filter + "/" + sort + "/", 
      data: { 
       'name': 'me', 
       'csrfmiddlewaretoken': '{% csrf_token %}' 
      }, 
      success: function (data) { 
       $('.row.replace').html(data); 
      }, 
      error: function (xhr, errmsg, err) { 
       alert(err); 
      } 
     }); //end ajax 
     return false; 
    }); //end onclick 

    //function 3 
    $("body").on("click", '.upvote', function (event) { 
     var x = $(this).attr("name"); 
     $.ajax({ 
      type: "POST", 
      url: "/upvote/" + x + "/", 
      data: { 
       'name': 'me', 
       'csrfmiddlewaretoken': '{{csrf_token}}' 
      }, 
      dataType: "json", 
      success: function (json) { 
       var y = "vote-count" + x; 
       $('i[class= "' + y + '"]').text(json.vote_count); 

       //flip button 
       $('.flip' + x).find('.card').toggleClass('flipped'); 
      }, 
      error: function (xhr, errmsg, err) { 
       alert("oops, something went wrong! Please try again."); 
      } 
     }); //and ajax 
     return false; 
    }); //end onclick 
}); //end ready 
+0

你會得到什麼樣的錯誤? – Chanckjh

+0

隨着一些標記,我們可能能夠複製/測試/調試等。 –

+0

什麼是「{%csrf_token%}」vs稍後:'{{csrf_token}}'? –

回答

-1

事件處理函數(函數1,2,3)都返回false。這會阻止事件冒泡DOM。我猜他們沒有按預期觸發,因爲處理事件的第一個函數正在停止傳播。通過刪除返回語句來測試它。

或者,您可以嘗試將委託的事件處理程序範圍更接近目標。

+0

如果是這種情況,第一個當所有三個都到位時,仍然應該工作。 。 。 – ernie

相關問題