2014-09-01 89 views
0

我有一個實時搜索ajax和即時獲取控制檯日誌錯誤Uncaught Typeerror: undefined is not a function.該錯誤指向我的代碼的第一行。我以前用過這個,它不知道現在發生了什麼,有什麼想法?jQuery生活問題 - undefined不是函數

$("input#search-staff").live("keyup", function() { 
     // Set Search String 
     var staffname = $(this).val(); 

     // Do Search 
     if(staffname !== ''){ 
      $.ajax({ 
       type: "GET", 
       url: "_ajax/_tasks/search-staff.php", 
       data: { query: staffname }, 
       cache: false, 
       success: function(html){ 
        $("ul#staff-list").html(html); 
       } 
      }); 
     }return false; 
    }); 
+1

您確定DOM中存在'$(「input#search-staff」)元素嗎? – eithed 2014-09-01 16:53:51

+2

[.live](http://api.jquery.com/live/)已棄用。考慮使用[事件委託](http://learn.jquery.com/events/event-delegation/)而不是 – Stryner 2014-09-01 16:54:49

+0

它在dom中存在 – user934902 2014-09-01 16:55:23

回答

0

這裏就是你的函數可以樣子:

$(document).on("keyup", "input#search-staff", function(e) { 
    var staffname = $(this).val(); 

    e.preventDefault(); 

    if (!staffname) return; 

    $.get("_ajax/_tasks/search-staff.php", {query: staffname}) 
    .done(function (html) { 
     $("ul#staff-list").html(html); 
    }); 
}); 

  • 開關從.live().on()事件代表團
  • 回報早 - 較少深入嵌套代碼
  • 開關從.ajax().get() w第i個jqXhr延遲事件處理(.done()

P.S:儘量不要做這樣的事情cache: false在客戶端上。只需在響應頭文件(Cache-Control: no-cache, no-store)中設置適當的HTTP緩存指令並將客戶端保留爲默認值即可。

相關問題