Windows Phone 8 - 浏览器忽略jQuery .change函数?

时间:2013-11-12 23:10:58

标签: jquery windows-phone-8

我正在使用jQuery Mobile(以及jQuery)来创建移动网站。这不是使用jQuery Windows Phone UI。

我创建了两个选择框,“ bpSelect ”和“ msSelect ”。 msSelect的数据基于bpSelect中的选择。

一旦用户在bpSelect中做出选择,就会对后端数据库进行ajax调用,然后将数据以JSON格式传回页面。创建msSelect的选项并调用“刷新”以显示它。

所有桌面网络浏览器以及iPhone或Android设备都可以正常使用。 在我的WIndows Phone(Lumia 920)上,msSelect框永远不会被创建。

似乎Windows Phone没有调用 $('#bpSelect')。当我做出选择时,在页面上更改(function()。 当我在此呼叫中加入“警报”时,它会在除Windows Phone 8浏览器之外的每台设备上触发。

这里有什么想法吗?我尝试过很多东西,例如使用“data-ajax = false”来访问页面,以及“document.ready()”而不是“pageinit”,但似乎没有任何效果。似乎Windows Phone浏览器忽略了某些jQuery代码。

我的所有功能都在页面顶部的 $('#createCarPage')。bind('pageinit',function()中。 它位于 data-role =“page”data-theme =“a”id =“createCarPage” DIV标记

Windows Phone似乎忽略了其他一些事情,例如 .selectmenu('disable'),但是现在我只是想让选择框工作。< / p>

我的代码的基础知识如下。任何帮助,将不胜感激。我真的很难过这个。

    <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="http://code.jquery.com/mobile/1.3.2/jquery.mobile-1.3.2.min.js"></script>

<body>
<div data-role="page" data-theme="a" id="createCarPage" class="rf-background">

<script type="text/javascript">

$('#createCarPage').bind('pageinit', function()
{
    $("#exTypeOptions input[type='radio']").checkboxradio('disable');

    $('#bpSelect').selectmenu('disable');
    $('#msSelect').selectmenu('disable');

    $('#bpSelect').on('change', function ()
    {
         $("#msSelect option").each(function(index, option) {
                 $(option).remove();
             });

        var listServlet = "/messages/makeList"; 

         $.ajax({
                   url: listServlet,
                   data: { bp:$('#bpSelect').val() },
                   dataType: "json",
                   success: function(data)
                   { 
                      $('#msSelect').append('<option value=>' + 'Select...'+ '</option>');

                    for (var i=0; i<data.model.length; i++)
                      {
                        $('#msSelect').append('<option value="' + data.model[i] + '">' + data.model[i]+ '</option>');
               }

                        $('#msSelect').selectmenu('enable');
                $('#msSelect').selectmenu('refresh');

                   },
                   error: function(jqXHR, textStatus, errorThrown)
                   {

                   }

                 });     

        });

      }); 

</script>

1 个答案:

答案 0 :(得分:1)

好的,我想出来了。在研究了jQuery和jQuery Mobile之后,我看不出浏览器会忽略jQuery代码的原因。 jQuery网站声称它支持Windows Phone浏览器,因此必定存在其他问题。

有...... Zepto.js

除了使用jQuery之外,我还使用了响应式框架 Foundation 4 。 我发现Foundation使用Zepto.js而不是jQuery。 Zepto.js网站声明了以下内容......

  

Zepto预计可以在每个现代浏览器和浏览器中使用   环境,Internet Explorer除外。

基金会网站说,你可以为Zepto提供jQuery,而不会出现任何问题。 当我删除对Zepto的引用时......问题解决了。

基金会声称他们切换到Zepto作为jQuery的“更轻替代”。

就个人而言,我会采取更实际的实施方式!

我希望这有助于某人。