1

我使用 KendoUI Mobile 的ScrollView控件作为轮播来容纳一些问题,并且需要为其禁用滑动事件(我使用“下一个”和“上一个”按钮来控制“导航”)。

我遇到的问题是我在 ScrollView 中有一个jQuery-UI 滑块,但是当我尝试更改滑块值时,它开始将 ScrollView 移动到下一个“页面”。

我希望有一种本地方法可以禁用 ScrollView 上的“滑动移动”,但我在文档中找不到任何内容。

我已经尝试在 ScrollView 页面上捕获事件,但无法获得在实际设备上工作的东西:

$('#scrollview-container [data-role="page"]').on('mousedown', function(e) {
    console.log('mousedown');
    e.stopImmediatePropagation();
});
$('#scrollview-container [data-role="page"]').on('touchstart', function(e) {
    console.log('touchstart');
    e.stopImmediatePropagation();
});

以上适用于我的模拟器,但不适用于实际设备。

有任何想法吗?

4

2 回答 2

0

要正确阻止事件,您需要在设置 swipe 事件时准确查看绑定是如何以及何时完成的。on()、bind() 和 live() 产生不同的事件顺序,如果在事件已经开始滑动后阻止事件,将无济于事。

不过,阻止子元素上的事件可能会更好,因为相对于框架设置的事件的顺序并不重要。尝试停止从滑块的直接父级传播触摸事件。

于 2012-11-16T03:04:27.803 回答
0

这是在这里回答:http://www.telerik.com/forums/scrollview-is-missing-a-lot-of-essential-functionality-(-)

var scrollview = $("[data-role=scrollview]").getKendoMobileScrollView();
var cancel = function() { this.cancel(); };

scrollview.pane.userEvents.bind("start", cancel); //disable the pages movement

// to no-longer disable the swipe use this:
// scrollview.pane.userEvents.unbind("start", cancel); //enable the pages movement
于 2014-05-19T06:55:02.553 回答