javascript - iPad 的 originalEvent.touches 不工作

标签 javascript jquery touch

一直在到处寻找如何使“sliderBar”上的这种触动在 iPad 上工作。我几乎用这个 http://www.the-xavi.com/articles/trouble-with-touch-events-jquery & 融入我的 mouseDown 功能:

function handleSliderSlide(event, ui) {
    if(event.originalEvent.touches && event.originalEvent.touches.length) {
        event = event.originalEvent.touches[0];
    } else if (event.originalEvent.changedTouches && event.originalEvent.changedTouches.length) {
        event = event.originalEvent.changedTouches[0];
    }

    if(event.originalEvent.type === 'keydown') {
        var maxScroll = $('#yearsWrapper').attr('scrollWidth') - $('#yearsWrapper').width();
        var years = $('#dates li').length - 1;
        $('#sliderBar').slider('option', 'step', years);
        $('#yearsWrapper').attr({
            scrollLeft: ui.value * (maxScroll / 100)
        });
    } else {
        var maxScroll = $('#yearsWrapper').attr('scrollWidth') - $('#yearsWrapper').width();
        $('#sliderBar').slider('option', 'step', 1);
        $('#yearsWrapper').attr({
            scrollLeft: ui.value * (maxScroll / 100)
        });
    }
}

HTML 代码大致如下:

<div id="timeline">
    <div id="dates">
        <ul>
            <li>
                <a href="#year1">1900</a>
            </li>
            <li>
                <a href="#year2">2000</a>
            </li>
        </ul>
        <div id="sliderBarWrapper">
            <div id="sliderBar" class="ui-slider ui-slider-horizontal ui-widget ui-widget-content ui-corner-all">
                <a href="#" class="ui-slider-handle ui-state-default ui-corner-all" style="left: 34%;"></a>
            </div>
        </div>
    </div>
    <div id="yearsWrapper">
        <div id="years">
            <div class="shadow">
                <div id="year1">
                    <a href="#">slider 1900</a>
                    <p>Year 1900 info</p>
                </div>
                <div id="year2">
                    <a href="#">slider 2000</a>
                    <p>Year 2000 info</p>
                </div>
            </div>
        </div>
        <!-- End years -->
    </div>
    <!-- End yearsWrapper -->
</div>

最佳答案

我认为这里的问题如下:

您首先用第一个触摸对象覆盖事件:

event = event.originalEvent.touches[0];

然后(我认为)你对待你的 event 对象就好像它仍然是原始对象一样:

if(event.originalEvent.type === 'keydown') ...

所以基本上你正在尝试访问 event.originalEvent.touches[0].originalEvent.type,据我所知,它不应该指向任何东西(have a look at the Touch Events specification 描述了触摸对象及其属性的详细信息)。

这是否解决了您的问题?

关于javascript - iPad 的 originalEvent.touches 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9012232/

相关文章:

jquery 插件 "DROP-DOWN LIST"添加 fontawesome 图标

php - 如何在 php 中获取部分从 jquery 加载的页面的整个 html

javascript - 当 meteor 中的数据发生变化时,使引导日历呈现

javascript - 输入 propertyChange 不适用于 jQuery datepicker

javascript - 如何启用 CORS

javascript - 为什么当我尝试针对正则表达式对其进行测试时字符串会消失?

jquery - 使用带有“提交”按钮的 JQuery UI 对话框

android - 如何在 opengl Android 中进行对象检测?

ios - 如何更改启用 "glow"时使用的 UIButton "Shows Touch On Highlight"颜色?

javascript - HmmerJS - 使 mousedown 在浏览器和触摸设备上保持一致