2014-03-25 52 views
0

以下代碼與jquery 1.7.2一起工作正常。但它不與jQuery 1.9.1。它給人以「遺漏的類型錯誤錯誤。對象的翻譯:有沒有一種方法‘活’。jQuery 1.9.1沒有方法實時錯誤

我怎樣才能解決這個問題?

在此先感謝。

enter image description here

<script> 
$(document).ready(function(){ 

    var tablecont = $("#tablesorter1"); 
    var module = "category"; 

    function updateitem() 
    {  
     $.ajax({ 
      type: "POST", 
      url: "http://localhost/tangen2014/index.php/category/admin/Ajaxgetupdate", 
      complete: function(data) 
      { 
       tablecont.html(data.responseText); 
      } 
     }); 
    } 

     //on submit event 
    $(".changestatus").live('click', function(event){ 
     event.preventDefault(); 
     var href = $(this).attr("href"); 
     var id =href.substring(href.lastIndexOf("/") + 1); 
     $.ajax({ 
      type: "POST", 
      url: "http://localhost/tangen2014/index.php/kaimonokago/admin/changeStatus"+"/"+module+"/"+id, 
      complete: function() 
      { 
       updateitem(); 
      } 
     }); 
    }); 
}); 
</script> 
+0

[jQuery live()適用於jQuery 1.8.3及更高版本,但不適用於1.9.1或2.0](http://stackoverflow.com/questions/16543309/jquery-live-works-with-jquery -1-8-3,但不是與1-9-1或2-0) – Jacob

回答

2

upgrade guide

的.live()方法,因爲jQuery的1.7已經被廢棄,並已在1.9移除 。我們建議您升級代碼來使用。對()方法 代替

所以你需要使用.on()這裏:

$('#tablesorter').on('click', ".changestatus", function(event){ 
    // Your code here 
}); 

這也是更好地委派事件到最近的靜態父母代替的文檔級別以獲得更好的性能。

+0

我認爲沒有任何重要的*表現*理由選擇一個親密的父母,但也有其他很好的理由。 Bubbling是在原生瀏覽器代碼中完成的,所以我懷疑在文檔中一直冒泡有任何可衡量的差異。 – Pointy

1

.live()方法已被棄用,因爲像永遠一樣,並且它在1.9中完全被抽出。

使用:

$(document).on('click', ".changestatus", function(event){ 

它不$(document);它可以是任何方便的容器元素。也就是說,任何元素都是「.changestatus」元素的父元素。

.live()方法是一個不錯的主意。有一段時間有.delegate(),它更像現代一體機.on()的三個參數。

相關問題