2013-07-29 6 views
0

Я хочу, чтобы отключить прокрутку для всей моей jqm веб-приложение, но если вы пытаетесь прокрутить на DIV с определенным классом, то листание разрешеноРазрешить TouchMove для дочернего элемента

Так что мой скроллинг ДИВ, .info имеет overflow:scroll применяется к нему и у меня есть этот скрипт, чтобы попытаться обнаружить, если вы коснувшись его

$('.info').bind('touchstart', function (e) { 
    if (e.type == "touchstart") { 
     return true; 
    } else { 
     event.preventDefault(); 
    } 
}); 
$(document).bind('touchmove', function() { 
    event.preventDefault(); 
}) 

Прямо сейчас, прокрутка отключена для документа, но когда я пытаюсь прокрутить мою информацию DIV, она не будет прокручиваться.

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

ответ

5

Это, как я делал это:

$(document).on('touchmove', function(ev) { 
if (!$(ev.target).closest('.is-scrollable').length) { 
    ev.preventDefault(); 
    } 
}) 

Где .is-scrollable будет ваш класс, .info в этом случае.

EDIT: исправить прокрутки в верхней и нижней части прокруткой DIV:

$('.is-scrollable').on('touchstart', function() { 
    var el = $(this); 
    if (el.scrollTop() <= 0) { 
     el.scrollTop(1); 
    } 
    if (el.scrollTop() >= el[0].scrollHeight) { 
     el.scrollTop(el[0].scrollHeight - 1); 
    } 
}); 
+0

Отлично, отлично работает. Спасибо за быстрый ответ – mhartington

+0

Это не удается на краях контейнера. Например, если вы прокрутите страницу до конца контейнера '' s-scrollable'', а затем запустите новую прокрутку и продолжите прокрутку вниз, она переместит фоновый рисунок. – Mathletics

+0

Это правда. Вам также необходимо включить что-то вроде моих добавлений редактирования. Было бы неплохо, если бы это было возможно. – kalley

Смежные вопросы