2016-07-12 1 views
0

Есть ли способ узнать, что элемент, вызывающий размытие клика, даже был сделан?Найти элемент под кликом, вызывающий размытие

Мне нужно, чтобы значение ui-select устанавливалось на то, что пользователь набрал, когда он нажимает на выпадающее меню. Но когда он нажимает на выпадающий элемент, вход должен быть отброшен и выбран пункт. Поэтому я должен понимать, где была мышь, когда пользователь щелкал входной сигнал от входа ui-select. Я попытался

element.find('input').on('blur', function (e) { 
     e.target 
    ... 
}); 

но цель всегда указывает на

input.form-control.ui-выбор-search.ng-valid.ng-touched.ng-dirty.ng-Валид-синтаксический

Get element currently under mouse without using mouse events

всегда находит выделен выпадающий элемент объявления

Determine which element the mouse pointer is on top of in Javascript

не работает, поскольку я не могу использовать свойства DOM X/Y.

Любые идеи?

ps: no jquery.

+0

Попробуйте воспроизвести сценарий с помощью jsbin, jsfiddle ... –

+0

Вы отметили это с помощью angularjs, возможно, стоит посмотреть на ng-blur? https://docs.angularjs.org/api/ng/directive/ngBlur – robstarbuck

+0

В 'focus' ввода, установите« click »eventlistener на корневом элементе' document', который первым, идентифицирует элемент, который получил щелчок («event.target», аналогичный вашему использованию выше), затем 'for' /' while' цикл через event.target и все его родители (вплоть до дерева DOM), ища совпадение [ «оригинал» сфокусирован «']. Если ни «element.target», ни какой-либо из родителей/предков не совпадают, вы нашли этот элемент. Верните ли вы матч или нет, вы, вероятно, захотите удалить этот eventListener, когда обработчик будет выполнен. –

ответ

1

В фокусе ввода, установите clickeventListener на элементе документа корневого:

  1. Определяет элемент, который получил щелчок (на event.target, подобный к использованию выше)
  2. for/while петли через event.target и все его родители (весь путь вверх по дереву DOM), глядя на матч [ «оригинал» сосредоточен <input>]

Если ни element.target, ни какой-либо из родителей/предков не совпадают, вы нашли элемент. Верните ли вы матч или нет, вы захотите удалить eventListener, когда обработчик будет выполнен.