JQuery Mobile несколько событий клика, когда вернуться на страницу - PullRequest
0 голосов
/ 17 августа 2011

Я только что обновил jquery mobile до бета-версии 2 (с бета-версии 1), и теперь я получаю несколько событий щелчка, если я возвращаюсь на страницу после нажатия кнопки назад, каждый раз, когда я возвращаюсь на нее, она добавляет еще один к щелчку, чтобы оповещение срабатывает, сколько раз вы заходите на страницу

Я также заметил, что клики / касания, кажется, проходят через текущую страницу, а клики по страницам, скрытым по видам, кажутся действительно странными, но я думаю, что они, вероятно, связаны между собой.

Как будто он создает несколько версий одной и той же страницы, и когда вы возвращаетесь на нее, она загружает новую, вызывая два события щелчка.

Вот фрагмент кода, который запускается

$('#click_me').live('vclick', function() {
    alert('clicked');
});

Надеюсь, это имеет смысл, и любой может пролить свет на то, что может происходить?

Ответы [ 2 ]

1 голос
/ 03 сентября 2011

Возможно, вы уже решили это, но вам нужно использовать событие pagecreate. Предложение Фила @:

$('div').live('pageshow',function(event, ui){
    $('#click_me').click(function() {
        alert('clicked');
    });
});

К сожалению, это не поможет, но вы можете решить эту проблему, если изменить pageshow на pagecreate

$('div').live('pagecreate',function(){
    $('#click_me').click(function() {
        alert('clicked');
    });
});

Если вы не используете AJAX для загрузки своих страниц, обязательно измените live на bind.

У меня была такая же проблема, и она полностью решила ее для меня.

0 голосов
/ 17 августа 2011

ОБНОВЛЕНО:

Я думаю, причина в том, что у вас есть событие click, привязанное к событию live, поэтому каждый раз, когда вы переходите на эту страницу, она вызывает событие click.попробуйте что-то вроде этого:

$('div').live('pageshow',function(event, ui){
    $('#click_me').click(function() {
        alert('clicked');
    });
});

или просто используйте событие нажатия

$('#click_me').click(function() {
    alert('clicked');
});

Когда бета-версия 2 была выпущена, они устарели vclick

Возврат: мы переключились с vclick для перехода по ссылкам

В бета-версии 1 мы решили использовать наше пользовательское событие vclick дляобработка ссылок Ajax для улучшения отзывчивости и скрытия панели URL на телефонах iPhone и Android.Несмотря на то, что мы провели немало тестов, прежде чем приступить к бета-версии 1, мы начали слышать отзывы о том, что это изменение вызвало некоторые существенные проблемы, в том числе:

  • События нескольких нажатийвызывая навигацию и проблему с элементом формы. В некоторых ситуациях при нажатии на элемент события касания / нажатия, кажется, запускаются дважды по ссылкам, и это связано с крайними случаями, когда цель события касания и события мыши не совпадают из-за того, какбраузеры рассчитывают допуски для этих событий.Это наиболее заметно в Android 2.1, но в разной степени затрагивает большинство браузеров на основе WebKit, когда события касания происходят около края элемента.

  • Обработчики щелчков в пользовательских сценариях не выполнялись«Работать» больше - если сценарий привязан только к событиям щелчка в документе, глобальная функция vclick может мешать, потому что события касания могут заменять события щелчка, поэтому события не будут появляться для запуска.

...