2016-12-27 60 views
0

點擊外面時我有兩個html元素如下:使搜索字段(結果)消失在iPad

  1. 輸入單元,它的類「FTS-輸入」。該輸入用作搜索框。
  2. 一個div容器,包含所有結果的列表,它的類是「下拉列表項,包裝」

我做誰,除了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)。你有線索爲什麼它不工作?

回答

0

您必須在$jQuery符號內環繞document

所以,你的代碼變得,

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

或者,您可以指定爲這樣:

$document = $(document); 

爲您建立一個小提琴它在Safari上10正常工作:https://jsfiddle.net/1ymrtcbf/

+0

我使用Angular和$ document是角度原生服務,用於代表文檔元素 – Mathemagician

+0

您可以嘗試上述更改並讓我知道它是否有效? – nashcheez

+0

當然。我正在嘗試它(需要時間來刪除緩存等)。 – Mathemagician