javascript - jQuery 在页面任意位置单击时向后滑动

标签 javascript jquery

$(".links").click(function(){ 
    $('.slider').stop(true,false).animate({ right:  "0" }, 800, 'easeOutQuint'); 
}, function() { 
    $(".slider").stop(true,false).animate({ right: "-200" }, 800, 'easeInQuint'); 
}, 1000);

我正在我的网站上构建一个小 slider 。 slider 位置是 right: -200。它滑动到位置 right: 0 我想在点击页面上的其他任何地方后将其设置为动画回到位置 right: -200

我尝试了所有失败的方法。 toggle(slide) 效果不错,但看起来不太好。

http://jsfiddle.net/aofg5v78/

最佳答案

将您的代码放入 JavaScript beautifier (最好对您发布的代码执行此操作以使其更易于理解)提供:

$(function () {
  $(".links")
    .click(function () {
        $('.slider')
          .stop(true, false)
          .animate({
            right: "0"
          }, 800, 'easeOutQuint');
      },
      function () {
        $(".slider")
          .stop(true, false)
          .animate({
            right: "-200"
          }, 800, 'easeInQuint');
      }, 1000);
});

您正在尝试将两个处理程序传递给 .click() 和一些看起来像超时或持续时间 (1000) 的东西。尝试这样的事情:

$(function () {
  var toggle;
  $(".links")
    .click(function () {
        toggle = !toggle;
        if (toggle) {
          $('.slider')
            .stop(true, false)
            .animate({
              right: "0"
            }, 800, 'easeOutQuint');
        }
        else {
          $(".slider")
            .stop(true, false)
            .animate({
              right: "-200"
            }, 800, 'easeInQuint');
        }
    });  

});

更新:要使其在您点击页面上的任意位置时滑动,稍微复杂一些:

$(function () {
  var toggle;
  $(document).click(function () {
    if (toggle) {
          toggle = !toggle;
          $(".slider")
            .stop(true, false)
            .animate({
              right: "-200"
            }, 800, 'easeInQuint');
    }
  });
  $(".links")
    .click(function (e) {
        e.stopPropagation();
        toggle = !toggle;
        if (toggle) {
          $('.slider')
            .stop(true, false)
            .animate({
              right: "0"
            }, 800, 'easeOutQuint');
        }
        else {
          $(".slider")
            .stop(true, false)
            .animate({
              right: "-200"
            }, 800, 'easeInQuint');
        }
    });  
  $(".slider")
    .click(function (e) {
      e.stopPropagation();
    });    
});

这部分:

  $(".slider")
    .click(function (e) {
      e.stopPropagation();
    });

当您点击 slider (而不是页面上的其他地方, slider 之外)时是否隐藏 slider ,但如果那不是您想要的想要然后你可以删除它。

(可以重构代码以消除重复并避免多次运行选择器,但它服务于此示例的目的。此外,您现在不能在一个页面上拥有多个这样的 slider ,因为所有 slider 都会滑动同时,但我想没关系。)

参见 DEMO .

使用 toggle 的旧 jQuery 版本会更简单方法,但不幸的是它在 1.8 版中被弃用并在 1.9 版中删除。

(顺便说一句,默认情况下,您正在使用的缓动函数在普通 jQuery 中不可用。如果您使用的是 jQuery UI,则它们可用,但如果您不使用,则必须先添加它们才能使用他们。只是要记住一些事情,以避免无用的“未定义不是函数”异常。)

关于javascript - jQuery 在页面任意位置单击时向后滑动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27520889/

相关文章:

javascript - 从日期选择器中禁用星期日

javascript - ReactJs-如何为每个列表 Axios post 方法进行映射?

javascript - 在控制台中显示秒表的时间

javascript - jQuery.data 只保存最后一个 Element 的数据

javascript - Angular 用链接替换部分不安全文本

javascript - 如何使用 Jquery 处理作为按钮实现的下拉菜单

javascript - 如何通过 JavaScript 调用带有参数的托管 bean 方法

javascript - 如何在 Angular 8 项目中为 SignalR 配置重新连接逻辑?

javascript - 如何在javascript中排队打印多段HTML文件?

javascript - 如何组合两个过滤器