提前谢谢你看看我的问题.
我正在创建一个网站,其中我有一个div列表,可以在Y轴上使用jQuery UI进行排序.
由于我希望使用触摸在移动设备上运行,因此我必须添加一些黑客以确保jQuery UI可用(因为它目前不支持触摸事件.).
这个hack被称为jQuery UI touch punch.
网站:jQuery UI触摸打孔.
GitHub:jQuery UI触摸打孔.
现在来了我的问题.有时列表变得如此之大,以至于网站将可滚动,当网站可滚动时,我无法正确拖动项目,因为当我尝试拖动div时,它只是滚动页面.我可以拖动它的唯一方法是当我双击该项目然后拖动它.
但这真的不是我想要的,因为使用和不自然真的很乏味.
现在的问题是,有没有办法在尝试从可拖动集中拖动其中一个项时禁用滚动.我尝试添加overflow-y: hidden
点按或添加touch-action : none
.不幸的是,这似乎不起作用.
总结
我所拥有的:我现在可以使用jQuery UI和jquery UI触摸打孔器通过触摸设备拖动和排序Div of List.
问题:列表将变得如此之大,以至于网站可以滚动,只需点按一下即可禁用拖动,我需要双击拖动项目.
我想要的是:即使我有滚动条,我也希望能够拖动项目(不需要双击).
我怎么能意识到这种行为/我应该从什么开始?任何提示和解决方案表示赞赏.
最后但并非最不重要的是这是我的FIDDLE.
编辑:
我正在使用:
IE 11
jQuery版本1.11.1
jQuery-ui版本1.11.4
我有一个拖放的网站,可用于计算机,平板电脑和手机.它使用jQuery,jQuery UI和jQuery UI Touch Punch.拖动会导致播放短音频片段,同时播放也会播放.这个小提琴有一个例子.
不幸的是,在当前版本的iOS Safari和Android Chrome中,音频无法正常工作.有办法解决这个问题吗?
此图像解释了各种浏览器版本中的行为:
图片说明:
iOS Safari:在iOS 8.4及更低版本中,拖动音频和丢弃音频都会播放.在iOS 9.0及更高版本中,拖动音频和丢弃音频都不会播放.
Android Chrome:在版本51.0.2704.81中,拖动音频和丢弃音频都会播放.在版本52.0.2743.98和版本55.0.2883.91中,拖动音频和丢弃音频都不会播放.在版本56.0.2924.87和63.0.3239.111中,拖动音频不播放,但丢弃的音频播放.
这是代码,如果小提琴消失了:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Drag and Drop with Audio</title>
<link href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.10.3/css/base/jquery.ui.all.css" rel="stylesheet">
<link href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.10.2/css/lightness/jquery-ui-1.10.2.custom.min.css" rel="stylesheet">
<style>
body {
background: #fff;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
}
#draggable {
width: 100px;
height: 100px;
padding: 0.5em;
float: left;
margin: 10px 10px 10px 0;
}
#droppable {
width: 150px;
height: 150px;
padding: 0.5em;
float: …
Run Code Online (Sandbox Code Playgroud) jquery google-chrome jquery-ui mobile-safari jquery-ui-touch-punch
我有一个jQuery-ui滑块,我正在尝试使用jQuery-ui Touch Punch在iPad上工作.根据文档,一旦我包含了库,我应该只需要执行以下操作以使其在iPad上运行.
$(".ui-slider-handle").draggable();
Run Code Online (Sandbox Code Playgroud)
但是,这不起作用.有人可以帮忙吗?
HTML
<div id="scroll"></div>
Run Code Online (Sandbox Code Playgroud)
JS
$(function(){
$("#scroll").slider({
orientation: "vertical",
range: "min",
min: 0,
max: 100,
value: 100
})
})
$(".ui-slider-handle").draggable();
Run Code Online (Sandbox Code Playgroud) 我有jQuery范围滑块小部件,我导入和使用如下:
declare var jQuery: any;
import 'jquery-ui/ui/widgets/slider';
import 'jquery-ui/ui/widgets/mouse';
Run Code Online (Sandbox Code Playgroud)
并像这样使用它:
jQuery(this.elementRef.nativeElement).find('#range-slider').slider({..});
Run Code Online (Sandbox Code Playgroud)
我的滑块工作正常.
问题是我需要启用移动触摸的滑块,所以我导入了jQuery UI Touch Punch:
declare var jQuery: any;
import 'jquery-ui/ui/widgets/slider';
import 'jquery-ui/ui/widgets/mouse';
import 'jquery-ui-touch-punch';
Run Code Online (Sandbox Code Playgroud)
但它错误:
TypeError: Cannot read property 'prototype' of undefined
Run Code Online (Sandbox Code Playgroud)
显然它无法找到jQuery和jQuery UI.但是,当导入的jQuery不在全局范围内时,如何将jQuery传递给触摸?
我将这个样板用于我的项目.
我正在使用 JQuery UI Touch Punch,就像我在JSFiddle中使用它一样。我搜索了很多地方来找出event
和ui
包含的内容,但我无法找到有关它的内容。
我是否缺少某种文档?或者有人可以解释一下 Touch Punch 提供什么以及event
和ui
参数包含什么?
javascript jquery jquery-ui jquery-ui-touch-punch jquery-events