Блокировать прокрутку и перемещать перетаскиваемый div [дубликат]

Другим сценарием является то, что вы нанесли нулевой объект в тип значения . Например, код ниже:

object o = null;
DateTime d = (DateTime)o;

Он выкинет NullReferenceException в роли. В приведенном выше примере это кажется совершенно очевидным, но это может произойти в более «поздних связующих» сложных сценариях, где нулевой объект был возвращен из некоторого кода, которого вы не являетесь, и приведение, например, генерируется некоторой автоматической системой.

Одним из примеров этого является этот простой фрагмент привязки ASP.NET с элементом управления календарем:

" />

Здесь SelectedDate на самом деле является свойством - типа DateTime - типа Calendar Web Control, и привязка может отлично вернуть что-то null. Неявный генератор ASP.NET создаст кусок кода, который будет эквивалентен приведенному выше методу. И это поднимет NullReferenceException, что довольно сложно определить, потому что он лежит в сгенерированном ASP.NET коде, который компилирует отлично ...

105
задан artlung 16 June 2010 в 01:30
поделиться

6 ответов

Потеряв много часов, я наткнулся на это!

jquery-ui-touch-punch

Он переводит события события в виде кликов. Не забудьте загрузить скрипт после jquery.

Я получил эту работу на iPad и iPhone

$('#movable').draggable({containment: "parent"});
130
ответ дан ctrl-alt-dileep 26 August 2018 в 10:53
поделиться
  • 1
    Это решение отлично работает, еще один ответ, который я устал, был багги и действительно не помог – musefan 5 March 2012 в 12:10
  • 2
    @ ctrl-alt-dileep спасибо, что мне тоже помогает. – Kamarshad 2 August 2012 в 13:00
  • 3
    Работает на Nexus 7, спасибо! – Magnus Smith 2 November 2012 в 17:26
  • 4
    Это было здорово! Спасибо! – samra 28 July 2013 в 11:04
  • 5
    Все еще отлично работает для iPad – Omni 4 July 2014 в 07:37

Этот проект на github может быть вашим решением

https://github.com/furf/jquery-ui-touch-punch

4
ответ дан boulder_ruby 26 August 2018 в 10:53
поделиться

jQuery ui 1.9 позаботится об этом для вас. Здесь представлена ​​демонстрация пре:

https://dl.dropbox.com/u/3872624/lab/touch/index.html

Просто возьмите jquery.mouse.ui.js вне, вставьте его под загружаемый файл jQuery ui, и это все, что вам нужно сделать! Работает также для сортировки.

Этот код отлично работает для меня, но если вы получаете ошибки, обновленную версию jquery.mouse.ui.js можно найти здесь:

Jquery-ui sortable не работает на сенсорных устройствах на базе Android или IOS

59
ответ дан Community 26 August 2018 в 10:53
поделиться
  • 1
    Супер классно! Все, что мне нужно было сделать, это связать .touch({ animate: false, sticky: false, dragx: true, dragy: true, rotate: false, resort: true, scale: false }); с моим существующим вызовом draggable(), и это работает! Я все еще должен разобрать все события, которые я хочу иметь, чтобы получить рабочий процесс правильно, но плагин jQuery touch сделал трюк! – artlung 16 June 2010 в 01:26
  • 2
    плагин, похоже, больше не доступен на jquery.com. вы все равно можете найти javascript здесь manifestinteractive.com/iphone/touch/js/jquery.touch.js – bjelli 17 November 2010 в 08:56
  • 3
    Это здорово, что они имеют дело с этим 1.9. FWIW, я обнаружил, что версия кода в этом демо содержит ошибки, хотя и не очень хорошо работает. Кто-то отправил более правильную версию по этому вопросу: stackoverflow.com/questions/6745098/… , который работает лучше для меня. – asgeo1 31 August 2011 в 13:03
  • 4
    Я обновил свой ответ, чтобы ответить на этот вопрос. Я еще не получил ошибок в моем случае использования с оригиналом. – thatmiddleway 31 August 2011 в 15:53
  • 5
    Хех, теперь плагин отсутствует на manifestinteractive.com. Попробуйте следующее: plugins.jquery.com/files/jquery.touch.js.txt – Ian Hunter 14 September 2011 в 18:56
  • 6
  • 7
    этот ответ больше недействителен. см. ответ @ ctrl-alt-dileep ниже (jquery-ui-touch-punch) для ответа 2012 года – bjelli 6 May 2012 в 14:17
  • 8
    Ссылка Dropbox не работает. – BerggreenDK 3 June 2013 в 08:21

Вчера я боролся с подобной проблемой. У меня уже было «рабочее» решение с использованием jQuery UI, перетаскиваемого вместе с jQuery Touch Punch, о котором говорится в других ответах. Однако использование этого метода вызывало странные ошибки на некоторых устройствах Android для меня, поэтому я решил написать небольшой плагин jQuery, который может перетаскивать HTML-элементы с помощью событий касания вместо использования метода, который эмулирует поддельные события мыши.

Результатом этого является jQuery Draggable Touch , который является простым плагином jQuery для создания элементов draggable, который имеет сенсорные устройства, поскольку это основная цель, используя события касания (например, touchstart, touchmove, touchhend, и т.д.). Он по-прежнему имеет резерв, который использует события мыши, если браузер / устройство не поддерживает события касания.

2
ответ дан heyman 26 August 2018 в 10:53
поделиться
  • 1
    Привет Хейман, Это хорошая работа. Спасибо, что поделились ею. Будет ли он работать и для jQuery, изменяемого по размеру? – Haris 3 May 2013 в 12:50

Вы можете попробовать использовать jquery.pep.js:

jquery.pep.js - это легкий плагин jQuery, который превращает любой элемент DOM в объект перетаскивания. Он работает в основном во всех браузерах, от старого до нового, от касания до щелчка. Я построил его, чтобы удовлетворить потребность, в которой перетаскиваемый интерфейс jQuery UI не выполнялся, поскольку он не работал на сенсорных устройствах (без хакерства).

Веб-сайт , Ссылка GitHub

1
ответ дан martynas 26 August 2018 в 10:53
поделиться

Этот проект должен быть полезен - отображает события касания, чтобы щелкнуть события таким образом, чтобы пользовательский интерфейс jQuery работал на iPad и iPhone без каких-либо изменений. Просто добавьте JS в любой существующий проект.

http://code.google.com/p/jquery-ui-for-ipad-and-iphone/

24
ответ дан Steve 26 August 2018 в 10:53
поделиться
Другие вопросы по тегам:

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