2013-04-16 47 views
2

有沒有人在使用jQuery.find()時有Corodova 2.5.0和jQuery 1.8.x/1.9.1的問題?似乎find()返回空對象。Windows Phone 8/Cordova/jQuery .find()

這是我的出發點:

HTML

... 

<ul id="here"> 
</ul> 

的JavaScript

.. 

$('#here').append('<li data-test="test1">first</li>'); 
$('#here').append('<li data-test="test2">second</li>'); 
$('#here').append('<li data-test="test3">third</li>'); 

var lis = $('#here').find('li'); 
console.log(lis); 
$.each(lis, function (ind, rec) { 
    console.log(rec); 
}); 

控制檯顯示:

log: {} 
log: {} 
log: {} 

相同的代碼是桌面瀏覽功能齊全rs - without cordova :)

+0

在沒有科爾多瓦的Windows Phone 8中,它是否完全正常運行? – MBillau

+0

似乎在Windows Phone 8中的桌面IE10和IE10瀏覽器中工作。 – user2285976

回答

0

我認爲WP8上的IE10無法打印「rec」對象的內容,即使「li」元素實際上被添加了。我試着用jQuery(V1.7.1)一科爾多瓦(V2.4.0)的Windows Phone 8的應用程序,它似乎工作確定與下面的代碼

$.each(lis, function (ind, rec) { 
    console.log(rec.innerHTML.toString()); 
}); 

輸出爲如下:

ScriptNotify :: first 
ScriptNotify :: second 
ScriptNotify :: third 

這樣做outerHTML代替打印:

ScriptNotify :: <li data-test="test1">first</li> 
ScriptNotify :: <li data-test="test2">second</li> 
ScriptNotify :: <li data-test="test3">third</li> 

從index.html的全碼:

<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
     <meta name="format-detection" content="telephone=no" /> 
     <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height, target-densitydpi=device-dpi" /> 
     <link rel="stylesheet" type="text/css" href="css/index.css" /> 
     <title>Hello World</title> 
    </head> 
    <body> 
     <div class="app"> 
      <h1>Apache Cordova</h1> 
      <ul id="here"> 
      </ul> 
     </div> 
     <script type="text/javascript" src="lib/jquery-1.7.1.js"></script> 
     <script type="text/javascript" src="cordova-2.4.0.js"></script> 
     <script> 
     window.console = { 
     log: function (str) { window.external.Notify(str); } 
     }; 

     $('#here').append('<li data-test="test1">first</li>'); 
     $('#here').append('<li data-test="test2">second</li>'); 
     $('#here').append('<li data-test="test3">third</li>'); 

     var lis = $('#here').find('li'); 
     console.log(lis.length.toString()); 
     $.each(lis, function (ind, rec) { 
     console.log(rec.outerHTML.toString()); 
     }); 
     </script> 
    </body> 
</html> 
+0

謝謝 - 我會降級到Cordova 2.4.0和jQuery 1.7.1,因爲我無法讓您的代碼在2.5.0和1.8.1中工作 – user2285976

+0

更改爲cordova 2.4.0&jQuery 1.7並且不起作用 - 正在使用仿真器還是設備進行測試? – user2285976

+0

兩者均經過測試。我已經更新了上面的答案,以包含index.html中的完整代碼。希望它有效。 –