【问题标题】:iPhone Safari Vs PC SafariiPhone Safari 与 PC Safari
【发布时间】:2011-03-02 05:00:30
【问题描述】:

这个 js 代码可以在我的电脑上的 safari 中工作,但不能在 ipod touch safari 上工作(也在 iphone 上测试过 - 仍然无法工作)。

$(document).ready(function(){

                $.ajax({
                type: "GET",
                url: "list.xml",
                dataType: "xml",
                cache: false,
                success: function(xml)
                 {              
                    $(xml).find('Lights>Light').each(function(){                        
                        var lightname = $(this).attr('Name');                       
                        $('<li><a href="#lightssubmenu" onclick="lightdata()" \')">'+lightname+'</a></li>').appendTo('#lightitems');
                    });
                }
            });

        });


        function lightdata()
        {
            alert("entered lightdata");             
        }

代码解析xml并动态创建html。 我的警报没有显示在 ipod touch 上 - 其他测试警报显示得很好。因此,当我在 ipod touch 上运行此函数时,不得出于某种未知原因(因此这个问题;o))对 lightdata 进行函数调用。 在手持设备上进行 safari 调试的可能性有哪些?我正在寻找像萤火虫这样的东西 - 只是为了 iphones safari 而不是为了 firefox。 移动 Safari 中的调试控制台没有显示错误。 任何建议/提示将不胜感激。

【问题讨论】:

    标签: jquery iphone xml safari mobile-safari


    【解决方案1】:

    由于我没有要测试的 XML,我只能说问题是您的 HTML 代码中有多余的字符 \')"

    改变这一行:

    $('<li><a href="#lightssubmenu" onclick="lightdata()"   \')">'+lightname+'</a></li>').appendTo('#lightitems');
    

    到这里:

    $('<li><a href="#lightssubmenu" onclick="lightdata()">'+lightname+'</a></li>').appendTo('#lightitems');
    

    此外,您应该更改处理事件的方式并将它们附加到内联 onclick 处理程序之外。这是您的代码,稍微移动了一下:

    $(document).ready(function(){
        var lightItems = $('#lightitems');
    
        lightItems.delegate('a','click', function(e){
          e.preventDefault();
          lightdata();
        })
    
        $.ajax({
            type: "GET",
            url: "list.xml",
            dataType: "xml",
            cache: false,
            success: function(xml) {              
                $(xml).find('Lights>Light').each(function(){                        
                    var lightname = $(this).attr('Name');                       
                    lightItems.append('<li><a href="#lightssubmenu">'+lightname+'</a></li>');
                });
            }
        });
    });
    
    
    function lightdata()
    {
        alert("entered lightdata");             
    }
    

    注意:这需要 jQuery 1.4.2+

    【讨论】:

      猜你喜欢
      • 2011-09-06
      • 1970-01-01
      • 2012-06-14
      • 1970-01-01
      • 2018-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多