Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.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
Jquery 事件触发器外部元素赢得';不要在水龙头上点火_Jquery_Mobile_Triggers_Click_Tap - Fatal编程技术网

Jquery 事件触发器外部元素赢得';不要在水龙头上点火

Jquery 事件触发器外部元素赢得';不要在水龙头上点火,jquery,mobile,triggers,click,tap,Jquery,Mobile,Triggers,Click,Tap,我已经设置了两个事件触发器,当用户在特定元素之外单击时关闭它们。这对非移动设备非常有效,但在移动设备或平板电脑上它们不会启动。我假设这是因为点击事件的触发方式与点击不同。关于如何实现这一点,以使一个功能同时涵盖这两个方面,有何建议 // Listen for unique event targets $(document).on( 'click', function(event) { if (!$(event.target).closest( '.modal .con

我已经设置了两个事件触发器,当用户在特定元素之外单击时关闭它们。这对非移动设备非常有效,但在移动设备或平板电脑上它们不会启动。我假设这是因为点击事件的触发方式与点击不同。关于如何实现这一点,以使一个功能同时涵盖这两个方面,有何建议

// Listen for unique event targets
      $(document).on( 'click', function(event) {
        if (!$(event.target).closest( '.modal .content' ).length) {
          $( '.modal' ).fadeOut(200);
        }
        if (!$(event.target).closest( '.language-selector ul' ).length) {
          if ( $( '.language-selector' ).is( ':visible') ) {
            $( '.language-selector >' ).removeClass('active');
          }
        }
        if (!$(event.target).closest( '.searchbox' ).length) {
          if ( $( '.searchfield' ).is( ':visible') ) {
            $( '.searchfield' ).removeClass('active').parents( '.searchbox' ).find( 'input[type="submit"]' ).removeClass( 'active' );
          }
        }
      });

是,单击和点击是不同的事件。

您可以使用JQuery选择器语法
(单击tap)
,绑定这两者:

尝试将“单击”绑定到“touchstart”:

对…的评价。。。如果您没有使用jQuery Mobile(或其他定义“tap”的插件/扩展),那么您就没有访问“tap”事件的权限

如果您只需要访问“tap”,那么有许多解决方案将捕获不是jquery移动版的tap事件,并且没有那么强大


关于“touchstart”和其他本机js touch事件的更多信息

你能创建一个小提琴吗?答案在这里,谢谢,但除了在链接目标上,我无法触发它。是因为我没有使用jQuery mobile吗?我需要它在任何元素上触发。@StaffanEstberg,是和否。使用JavaScript的Mobile总是反复试验。jquerymobile尝试合并事件,这可能更好。或者您的问题可能是点击和点击之间的300毫秒差。考虑到您的淡入淡出效果和200毫秒的差异,它可能是。在这种情况下,Fastclick可能会有所帮助。不断尝试不同的解决方案,直到其中一个奏效。快速点击可在以下网址找到:
// Listen for unique event targets
      $(document).on( 'click tap', function(event) {
        if (!$(event.target).closest( '.modal .content' ).length) {
          $( '.modal' ).fadeOut(200);
        }
$(document).on( 'click touchstart', function(event) {
      if (!$(event.target).closest( '.modal .content' ).length) {
      $( '.modal' ).fadeOut(200);
}