Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript bxSlider:禁用桌面浏览器的touchEnabled_Javascript_Jquery_Html_Bxslider - Fatal编程技术网

Javascript bxSlider:禁用桌面浏览器的touchEnabled

Javascript bxSlider:禁用桌面浏览器的touchEnabled,javascript,jquery,html,bxslider,Javascript,Jquery,Html,Bxslider,如果用户有桌面浏览器,我尝试禁用bxSlider库的touchEnabled选项 if(navigator.userAgent.match(/Chrome|Mozilla|Safari/)){ $('.theSlider').bxSlider({ touchEnabled: false }); } //Html slider <ul class="theSlider"> if(navigator.userAgent.match(/Chrom

如果用户有桌面浏览器,我尝试禁用bxSlider库的touchEnabled选项

if(navigator.userAgent.match(/Chrome|Mozilla|Safari/)){
     $('.theSlider').bxSlider({
          touchEnabled: false
     });
}

//Html slider
<ul class="theSlider">
if(navigator.userAgent.match(/Chrome | Mozilla | Safari/){
$('.theSlider').bxSlider({
touchEnabled:错误
});
}
//Html滑块
在Chrome的开发者工具控制台中调试时,在尝试将其设置为false时,未定义I get touchEnabled。我做错了什么

  • 在窗口对象上侦听。若应用程序加载到桌面上,很可能不会触发触控事件。反过来,移动设备在正常使用时会触发touchstart事件
  • 接下来,如果触发了
    touchstart
    ,bx方法将运行并传递存储新选项的对象(
    cfg2
  • 最后一个任务是删除侦听器,因为这样的目的在每个会话中只需要一次
  • 详细信息将在演示中进行注释

    演示
    //初始配置
    变量cfg1={
    touchEnabled:错误
    }
    //备用配置
    变量cfg2={
    是的,
    没错,
    瑞士阈值:25,
    preventDefaultSwipeX:false,
    预防默认Swipey:错误
    }
    /*将瞬间存储在变量中。
    ||通过cfg1选项
    */
    var bx=$('.bx').bxSlider(cfg1);
    /*委派窗口对象上的touchstart事件
    ||它基本上只检测touchstart
    ||事件,如果设备可以实际使用触摸事件。
    ||因此,当使用笔记本电脑、台式机等时
    ||touchstart将永远不会被触发。
    */
    /*现在,如果这加载到移动设备上,它将检测到
    ||touchstart事件,然后使用新的
    ||配置(cfg2),其中的选项是
    ||touchEnabled:true/属性:值
    ||完成后,它将删除事件侦听器
    ||使用.off()方法。
    */
    $(窗口).on('touchstart',enableTouch);
    功能启用触摸屏(e){
    bx.重新加载滑块(cfg2);
    $(窗口).off('touchstart',enableTouch);
    }
    img{
    显示:块;
    保证金:0自动;
    }
    
    
  • 在窗口对象上侦听。若应用程序加载到桌面上,很可能不会触发触控事件。反过来,移动设备在正常使用时会触发touchstart事件
  • 接下来,如果触发了
    touchstart
    ,bx方法将运行并传递存储新选项的对象(
    cfg2
  • 最后一个任务是删除侦听器,因为这样的目的在每个会话中只需要一次
  • 详细信息将在演示中进行注释

    演示
    //初始配置
    变量cfg1={
    touchEnabled:错误
    }
    //备用配置
    变量cfg2={
    是的,
    没错,
    瑞士阈值:25,
    preventDefaultSwipeX:false,
    预防默认Swipey:错误
    }
    /*将瞬间存储在变量中。
    ||通过cfg1选项
    */
    var bx=$('.bx').bxSlider(cfg1);
    /*委派窗口对象上的touchstart事件
    ||它基本上只检测touchstart
    ||事件,如果设备可以实际使用触摸事件。
    ||因此,当使用笔记本电脑、台式机等时
    ||touchstart将永远不会被触发。
    */
    /*现在,如果这加载到移动设备上,它将检测到
    ||touchstart事件,然后使用新的
    ||配置(cfg2),其中的选项是
    ||touchEnabled:true/属性:值
    ||完成后,它将删除事件侦听器
    ||使用.off()方法。
    */
    $(窗口).on('touchstart',enableTouch);
    功能启用触摸屏(e){
    bx.重新加载滑块(cfg2);
    $(窗口).off('touchstart',enableTouch);
    }
    img{
    显示:块;
    保证金:0自动;
    }
    
    

    感谢您的回复,这是我设法找到的解决方案。我将默认的var touchDevice设置为false。如果用户正在使用移动设备,它会检测并将touchDevice设置为true。当我初始化bxSlider时,它将接受touchDevice设置为的任何内容,并将touchEnabled设置为该结果

    // Enable touch events for Mobile Browsers
    var touchDevice = false;
    if (navigator.userAgent.match(/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/)) {
          touchDevice = true;
    }
    
    $('.theSlider').bxSlider({
          touchEnabled: touchDevice
    });
    

    感谢您的回复,这是我设法解决的问题。我将默认的var touchDevice设置为false。如果用户正在使用移动设备,它会检测并将touchDevice设置为true。当我初始化bxSlider时,它将接受touchDevice设置为的任何内容,并将touchEnabled设置为该结果

    // Enable touch events for Mobile Browsers
    var touchDevice = false;
    if (navigator.userAgent.match(/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/)) {
          touchDevice = true;
    }
    
    $('.theSlider').bxSlider({
          touchEnabled: touchDevice
    });
    

    什么是未定义的
    ?“你是如何检查它的?”昆汀我正在用Chrome进行调试。if语句返回true,它可以找到
    $('.theSlider').bxSlider
    。所以我最好的猜测是touchEnabled在某种程度上是未定义的,“在Chrome中”是非常模糊的。确切地说,
    未定义的是什么?您在哪里看到显示的
    未定义的
    ?也许你的开发工具的屏幕截图(你看到的是在开发工具中吗?)会有所帮助?@Quentin在开发工具控制台中,我正在键入
    if(navigator.userAgent.match(/Chrome | Mozilla | Safari/){$('.theSlider').bxSlider({touchEnabled:false});}
    我现在收到的错误消息是touchEnabled未定义。@user3586417与大多数jQuery插件一样,必须重新加载bxSlider才能更改选项,不能“动态”更改它们。有关可能的解决方案,请参阅我的答案。什么是
    未定义的
    ?“你是如何检查它的?”昆汀我正在用Chrome进行调试。if语句返回true,它可以找到
    $('.theSlider').bxSlider
    。所以我最好的猜测是touchEnabled在某种程度上是未定义的,“在Chrome中”是非常模糊的。确切地说,
    未定义的是什么?您在哪里看到显示的
    未定义的
    ?也许你的开发者工具的截图(你看到的是开发者工具吗?)会有帮助?@Quentin在开发者工具控制台中,我正在键入
    if(navigator.userAgent.match(/Chrome | Mozilla | Safari/){$('.theSlider'))