События jQuery Click не запускаются на позиции: абсолютный тег <td>на iOS после ScrollTop - PullRequest
5 голосов
/ 05 февраля 2012

На моем веб-сайте есть «Справочные документы» для моего приложения для iPhone, которые пользователи видят в UIWebView из моего приложения. Это демонстрирует странное поведение. Приведенный ниже код отлично работает на настольных Safari и Firefox, но не на мобильных Safari. Вы можете увидеть страницу здесь: Моя страница поддержки

Меню справки - это положение: абсолютное и «прикрепленное» к вершине с помощью некоторых методов в Интернете. В коде используются все методы, которые я могу найти для запуска jQuery, такие как пустой onclick = "", cursor: указатель на элемент. и т. д. Это работает в первый раз, но не будет прокручиваться до СЛЕДУЮЩЕЙ вещи, к которой пользователь прикасается, если вы не прокрутите страницу вручную.

Есть и другие похожие вопросы по стеку, но ни одно из предложений не работает для меня. Какие-нибудь мысли. Это мой код jQuery.

$(".help-menu-list-item").on( "click", function(e) {
    $(".help-menu td").removeClass("selected");
    $(this).addClass("selected");
    $("html, body").animate(
        {scrollTop: $(".help-item-anchor"+"."+$(this).attr('id')).offset().top}, 'slow'
    );
});

ПРИМЕЧАНИЕ. Я НЕ ДУМАЮ, что это проблема scrollTop. Кажется, это проблема получения кликов. Если я добавлю jquery alert () в приведенный выше блок jquery, он не сработает, если сначала немного не прокрутить страницу вручную. Итак ... это проблема срабатывания события щелчка ... НО Я ПОПРОБОВАЛ многие приемы, чтобы получить срабатывание события щелчка. Не можете понять, почему они будут стрелять в первый раз, но не снова, пока не произойдет ручная прокрутка?

  • ОБНОВЛЕНИЕ *

Я вырвал все липкие меню на основе jQuery и использовал поддержку iOS 5 для: положение: абсолютное

вместе с: -webkit-переполнение прокрутки: сенсорный;

... Это дает намного более простой код для получения фиксированного меню, расположенного вверху, но jQuery выше STILL имеет ту же проблему .... Я получаю событие первого нажатия, но НЕ те, которые после прокрутки до позиции если пользователь не прокручивает страницу вручную.

ТАК ... это jQuery или iOS ??

Ответы [ 2 ]

2 голосов
/ 09 февраля 2012

Это признанная ошибка iOS Safari, связанная с элементами с фиксированной позицией.Я подал отчет об ошибке АЦП, который был признан обманом # 10301184.Следовательно, я не могу отслеживать статус.Я никогда не находил работы.

Отредактировано 18 сентября 2012 г.

ПРИМЕЧАНИЕ. Я вижу, что эта ошибка теперь исправлена ​​и о ней сообщается в iOS6!!Мой код работает.

1 голос
/ 05 февраля 2012

Я только что ввел это в мою консоль инспектора на вашей странице, и она работала нормально:

$('.help-menu-list-item').click(function() {alert("banana")})

Новое редактирование: похоже, это известная ошибка jQuery

Нашел это хотя:

Просто добавьте «cursor: pointer» в CSS элемента, и событие live click будет работать как положено.

так что, возможно, попробуйте это:

$('.help-menu-list-item').css("cursor", "pointer")

на документе готов, не могу проверить, хотя у меня нет iPhone: (

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...