javascript - 单击外部时隐藏列表

标签 javascript jquery toggle hide show

我有一个 share 链接,单击它会显示链接列表。我正在使用 toggle 来隐藏和显示此列表。

当列表可见时,用户可以单击共享来隐藏(切换)链接列表的可见性。

但是,这样做的一个小问题是,在用户通过按 share 切换列表之前,链接列表一直可见。

我添加此脚本是为了在用户单击列表外部时关闭列表。

$(".meta-share").click(function() {
  event.preventDefault();
  $(".social-share").fadeToggle();
});

$(document).mouseup(function(e) {

  var container = $(".social-share");

  if (!container.is(e.target) && container.has(e.target).length === 0) {

    container.fadeOut();

  }
});

但是,切换 现在无法按预期工作。

有人能帮忙吗?

这是一个 jsFiddle显示问题。

最佳答案

那是因为你说当你点击目标和目标旁边时会淡出。当目标是 meta 时,您所要做的就是返回 false——在您的 document.mouseup 中共享。

$(".meta--share").click(function() {
  event.preventDefault();

  $(this.nextElementSibling).fadeToggle();
});

$(document).mouseup(function(e) {

 if(e.target.className == "meta--share"){
    return false;
 }
 var container = $(".social-share");

 if (!container.is(e.target) && container.has(e.target).length === 0) {

   container.fadeOut();

 }
});

这是您调整后的 fiddle :https://jsfiddle.net/9hpw15oq/2/

更新

在 .click 函数中。而不是通过类查找元素。使用 .click 事件选择元素。

我已经更新了代码和 fiddle

关于javascript - 单击外部时隐藏列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50621208/

相关文章:

javascript - 我无法在 firefox 开发工具的控制台中打开覆盖选项卡

javascript - jQuery Toggle - 应该只在点击标题时关闭

ios - AVFoundation:在 CanAddInput 处切换相机失败

javascript - JS 切换可见性 : How to Hide Already Visible Elements on Click

javascript:确保闭包中的对象被垃圾收集

javascript - HTML5 验证 : different behavior when custom validation message is set

javascript - 使用 ACHART 附加子项和删除子项 js

ASP.NET Webmethod 总是返回 401

javascript - 将类添加到具有相同文件扩展名的所有 anchor 标记

jquery - “活跃”类不工作