2012-08-14 31 views
0

我嘗試創建一個jQuery的自我暗示功能(只experimental- jQuery的小白),使用$(EL)。html的功能,呈現出正被服務的數據IM:html jquery函數不適用於keydown事件?

$("#suggestions").addClass("active"); 
    var words = $(this).val(); 
    var results = searchData(questions,words); 
    $("#suggestions").html(function() { 
      _.each(results, function(q, key){ 
       return "<p>" + q.question + "</p>"; // problem is here 
      }); 
     }); 

完整的工作代碼在這裏:http://jsfiddle.net/HSBWt/6/ 我似乎不知道會出現什麼問題?

+0

什麼它應該做,這是不是? – 2012-08-14 17:40:30

+0

它的意思是顯示#suggestions,它隱藏在內部,並將數據從questions數組中提取出來,就像自動提示一樣。但它沒有這樣做,我知道問題是在.html函數:) – user1551482 2012-08-14 17:42:08

+0

根據我的經驗html()在keydown中工作正常,你肯定你的代碼實際上把東西放在.html()? – 2012-08-14 17:44:16

回答

1

http://jsfiddle.net/HSBWt/9/

使用map功能找回的數組物體

+0

你的解決方案是不使用jQuery的'.map()'。它使用本地的。 – 2012-08-14 17:59:10

+0

我的錯誤。從來沒有意識到它是香草 – 2012-08-14 17:59:55

3

問題是您的each聲明裏面html函數。

We can break the $.each() loop at a particular iteration by making the callback function return false. Returning non-false is the same as a continue statement in a for loop; it will skip immediately to the next iteration.
reference

修復下面的代碼:

var suggestions; 
_.each(results, function(q, key){ 
    suggestions += "<p>" + q.question + "</p>"; 
}); 
return suggestions; 

demo

0

來自_each的結果未在html中使用。您需要保存和回報生成的字符串:

var results = []; 
_.each(results, function(q, key){ 
    console.log(q.question); 
    results.push("<p>" + q.question + "</p>"); 
}); 
return results.join('');