jQuery 滑块无法按设计在移动设备上运行
jQuery Slider not working on mobile as designed
2015 年 7 月 24 日更新:由于我无法迁移代码并且存在冲突问题,所以我完全更改了库。对我来说,最快的修复是 http://refreshless.com/nouislider/。它仍然允许我使用与 jquery 相同的短编码来检索值。我不能保证这有多轻,但我可以推荐在客户网站上进行临时修复。
更新 2015 年 7 月 30 日:jQuery UI 已经尝试和 Touch Punch,它们都导致了进一步的问题。在这种情况下,对我来说唯一的解决方案是 No UI Slider。您的项目可能有所不同,但对于 4 年以上的旧框架上严重的 jQuery 脚本冲突,这是我的解决方案。
以下代码(示例位于:http://www.equant-design.com/aab/shop/category/new-in-whats-new/89)让我深思,因为我正在帮助客户将他的站点转换为响应模式。滑块按编码工作,但在移动设备上,范围只能通过单击比例尺而不是书挡来定义范围。我正要完全删除代码,但想看看是否有人知道这个问题的快速修复方法。
jQuery版本:1.4.2
<script type="text/javascript">
$('#price-range-filter-header').click(function() {
FilterContainerSlideUpDown('filter_but', 'price-range-filter-header');
});
$(function() {
$("#slider-range").slider({
range: true,
min: 0,
max: 300,
values: [0, 300],
step: 5,
slide: function(event, ui)
{
$("#slider-range-caption").html('<?=$currency_type->symbol?>' + ui.values[0] + ' - ' + '<?=$currency_type->symbol?>' + ui.values[1]);
},
change: function(event,ui)
{
ApplyPriceRangeFilter(ui.values[0],ui.values[1]);
}
});
$("#slider-range-caption").html('<?=$currency_type->symbol?>' + $("#slider-range").slider("values", 0) + ' - ' + '<?=$currency_type->symbol?>' + $("#slider-range").slider("values", 1));
//initialise jquery scrollbar
$('.scrollbar').scrollbar();
});
</script>
<div id="filter_but" name="filter_but">
<div id="slider-range"></div>
</div>
在我看来,页面和滚动有问题。如果我是你,我会禁用页面拖动(同时仍允许滚动),这样当用户滑动滑块时,他们不会拖动页面。以下代码要求您使用 jQuery 手机:
$(document).delegate('.ui-page', 'touchmove', false);
或者,您可以使用 Foundation 或 Bootstrap 之类的前端框架,您可以使用他们的工具来确保一切都在正确的位置并且真正适合移动设备。
要使 jQuery UI 小部件在移动设备上运行,您需要集成对触摸事件的支持。
这个项目已经完成了:jQuery UI Touch Punch
您只需要在 jQuery 和 jQuery UI 之后包含它。
<script src="jquery.ui.touch-punch.min.js"></script>
我遇到了同样的麻烦,还有很多移动网络应用程序。最后,受够了触摸管理,外部 js,JQuery 等等第四,我使用了 http://refreshless.com/nouislider/ 。
(请确保我从 2012 年的 v1.4 在线或 Phonegap 中抢走了此类应用程序)。
完美、简单、清晰,因此易于定制。
我的回答:NoUiSlider。定义
我的天哪,不要陷入棘手的开发...让它变得简单
2015 年 7 月 24 日更新:由于我无法迁移代码并且存在冲突问题,所以我完全更改了库。对我来说,最快的修复是 http://refreshless.com/nouislider/。它仍然允许我使用与 jquery 相同的短编码来检索值。我不能保证这有多轻,但我可以推荐在客户网站上进行临时修复。
更新 2015 年 7 月 30 日:jQuery UI 已经尝试和 Touch Punch,它们都导致了进一步的问题。在这种情况下,对我来说唯一的解决方案是 No UI Slider。您的项目可能有所不同,但对于 4 年以上的旧框架上严重的 jQuery 脚本冲突,这是我的解决方案。
以下代码(示例位于:http://www.equant-design.com/aab/shop/category/new-in-whats-new/89)让我深思,因为我正在帮助客户将他的站点转换为响应模式。滑块按编码工作,但在移动设备上,范围只能通过单击比例尺而不是书挡来定义范围。我正要完全删除代码,但想看看是否有人知道这个问题的快速修复方法。
jQuery版本:1.4.2
<script type="text/javascript">
$('#price-range-filter-header').click(function() {
FilterContainerSlideUpDown('filter_but', 'price-range-filter-header');
});
$(function() {
$("#slider-range").slider({
range: true,
min: 0,
max: 300,
values: [0, 300],
step: 5,
slide: function(event, ui)
{
$("#slider-range-caption").html('<?=$currency_type->symbol?>' + ui.values[0] + ' - ' + '<?=$currency_type->symbol?>' + ui.values[1]);
},
change: function(event,ui)
{
ApplyPriceRangeFilter(ui.values[0],ui.values[1]);
}
});
$("#slider-range-caption").html('<?=$currency_type->symbol?>' + $("#slider-range").slider("values", 0) + ' - ' + '<?=$currency_type->symbol?>' + $("#slider-range").slider("values", 1));
//initialise jquery scrollbar
$('.scrollbar').scrollbar();
});
</script>
<div id="filter_but" name="filter_but">
<div id="slider-range"></div>
</div>
在我看来,页面和滚动有问题。如果我是你,我会禁用页面拖动(同时仍允许滚动),这样当用户滑动滑块时,他们不会拖动页面。以下代码要求您使用 jQuery 手机:
$(document).delegate('.ui-page', 'touchmove', false);
或者,您可以使用 Foundation 或 Bootstrap 之类的前端框架,您可以使用他们的工具来确保一切都在正确的位置并且真正适合移动设备。
要使 jQuery UI 小部件在移动设备上运行,您需要集成对触摸事件的支持。
这个项目已经完成了:jQuery UI Touch Punch
您只需要在 jQuery 和 jQuery UI 之后包含它。
<script src="jquery.ui.touch-punch.min.js"></script>
我遇到了同样的麻烦,还有很多移动网络应用程序。最后,受够了触摸管理,外部 js,JQuery 等等第四,我使用了 http://refreshless.com/nouislider/ 。 (请确保我从 2012 年的 v1.4 在线或 Phonegap 中抢走了此类应用程序)。
完美、简单、清晰,因此易于定制。
我的回答:NoUiSlider。定义
我的天哪,不要陷入棘手的开发...让它变得简单