在 Ipad 上单击外部时使搜索字段(带有结果)消失

Posted

技术标签:

【中文标题】在 Ipad 上单击外部时使搜索字段(带有结果)消失【英文标题】:Making the search field (with results) disappear when clicking outside on Ipad 【发布时间】:2016-12-27 09:06:34 【问题描述】:

我有两个html元素如下:

    类为“fts-input”的输入元素。此输入用作搜索框。 一个div容器,包含所有结果列表,其类为“dropdown-items-wrapper”

我编写的代码可在除 Safari 之外的所有浏览器中运行,当在搜索字段外或搜索结果外单击时,搜索结果会消失。这段代码是:

    var ftsInput = $('.fts-input');
    var dropDownList = $('.dropdown-items-wrapper');

 function closeSearchWhenClickingElsewhere(event, dropDown) 
    var clickedElement = event.target;
    if (!clickedElement) return;

    var elementClasses = clickedElement.classList;
    var clickedOnSearchOrResults = elementClasses.contains('fts-input') ||
        elementClasses.contains('dropdown-items-wrapper');

    if(!clickedOnSearchOrResults) 
        dropDown.fadeOut('slow');
    


    $document.on('click', (e) => 
        this.closeSearchWhenClickingElsewhere(e, dropDownList);
    );

但此代码似乎不适用于 Ipad (ios Safari)。你知道它为什么不工作吗?

【问题讨论】:

【参考方案1】:

您必须在 $ jQuery 符号内环绕 document

所以你的代码变成了,

$(document).on('click', (e) => 
    this.closeSearchWhenClickingElsewhere(e, dropDownList);
);

或者,您可以这样分配:

$document = $(document);

为您创建了一个在 Safari 10 上运行良好的小提琴:https://jsfiddle.net/1ymrtcbf/

【讨论】:

我正在使用 Angular,$document 是 Angular 的原生服务,用于表示文档元素 你能试试上面的改变,让我知道它是否有效吗? 当然。我现在正在尝试(删除缓存等需要时间。)

以上是关于在 Ipad 上单击外部时使搜索字段(带有结果)消失的主要内容,如果未能解决你的问题,请参考以下文章

SQL如何在升序排序时使空值排在最后

清除 LiveSearchGridPanel 中的搜索文本字段

如何在 iPad 上的 jquery 外部单击关闭菜单

单击时使图像填充屏幕

Altair 交互式线图,单击右侧图标时使线条弹出并突出显示

当我们单击选择 2 下拉菜单时,将焦点设置为搜索文本字段