2013-04-16 44 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中的完整代码。希望它有效。 –