【发布时间】:2016-07-12 08:27:51
【问题描述】:
有什么方法可以找出导致点击模糊的元素甚至被改掉了吗?
我需要将 ui-select 的值设置为用户在下拉菜单之外单击时输入的内容。但是当他点击下拉项目时,应该丢弃输入并选择项目。所以我应该了解当用户在 ui-select 的输入之外单击时鼠标在哪里。我试过了
element.find('input').on('blur', function (e) {
e.target
...
});
但目标总是指向
input.form-control.ui-select-search.ng-valid.ng-touched.ng-dirty.ng-valid-parse
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:没有 jquery。
【问题讨论】:
-
请尝试使用jsbin、jsfiddle复制场景...
-
你已经用 angularjs 标记了这个,也许值得看看 ng-blur? docs.angularjs.org/api/ng/directive/ngBlur
-
在输入的
focus上,在根document元素上设置一个click事件监听器,它首先标识收到点击的元素(event.target,类似于您上面的使用),然后for/while循环遍历event.target及其所有父对象(一直向上到DOM 树),寻找[“原始”焦点<input>] 的匹配项。如果element.target和任何父/祖先都不匹配,则您找到了该元素。无论您是否返回匹配项,您都可能希望在处理程序完成后删除该 eventListener。 -
谢谢伊藤皮萨罗!这可能是要走的路 - 我正在考虑向下拉项添加单击(或者可能是更好的 mousedown)侦听器(但它们是动态添加到 dom 的)并且忘记了我可以将它添加到父 elt 并使用 event.target。
-
没问题!我真的应该将其作为答案提交,以便其他人更容易找到。我现在正在修复它……
标签: javascript html angularjs ui-select