iPhone Safari Vs PC Safari

Эти работы js-кода в сафари на моем ПК, но не на сафари iPod touch (также протестировал его на 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 - другие тестовые предупреждения показывают очень хорошо. Таким образом, вызов функции к lightdata не должен происходить по некоторой неизвестной причине (следовательно этот вопрос; o)), когда я выполняю это на iPod touch. Каковы возможности отладки в сафари на карманном устройстве? я ищу что-то как поджигатель - только для сафари iPhone вместо этого для Firefox. Консоль отладки в мобильном сафари не показывает ошибок. Любой совет / подсказки ценился бы.

1
задан Doug Neiner 10 June 2010 в 14:34
поделиться

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+

2
ответ дан 2 September 2019 в 23:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: