Ben*_*est 3 javascript angularjs angularjs-directive
我有一个这样的列表:
<ul class="tabs-dropdown">
<li><a href="/home">Home</a></li>
<li>
<a href="javascript:">French Alps</a>
<div>
<ul>
<li><a href="/region/french-alps/about">About</a></li>
<li><a href="/region/french-alps/properties">Properties</a></li>
</ul>
</div>
</li>
<li>
<a href="javascript:">Swiss Alps</a>
<div>
<ul>
<li><a href="/region/swiss-alps/about">About</a></li>
<li><a href="/region/swiss-alps/properties">Properties</a></li>
</ul>
</div>
</li>
<li><a href="/finance">Finance</a></li>
<li><a href="/contact">Contact Us</a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)
和一些像这样的JavaScript:
var element = angular.element(document.querySelector('ul'));
element.children().on('focusin', function () {
angular.element(this).addClass('focused');
}).on('focusout', function () {
angular.element(this).removeClass('focused');
});
Run Code Online (Sandbox Code Playgroud)
基本上,我希望当他们的任何后代有焦点时,第一级列表元素变为红色.我正在听第一级列表元素上的focusin和focusout事件来实现这一点.
将焦点应用于示例中的元素的最佳方法是选择它们.
这在Chrome和IE中运行良好,但在Firefox中没有,我想不出原因.
任何帮助将不胜感激.
如果你想知道为什么我在AngularJS而不是jQuery中这样做,那是因为这段代码是Angular指令的一部分,而这只是不起作用的一点.
您可以捕获focus/ blur事件(而不是等待冒泡)而不是firefox中的focusin/ focusoutevents,如Focus的Event_delegation中的解释
示例: http ://jsfiddle.net/Zcq8F/1/
var ulElem = angular.element(document.querySelector('ul'));
angular.forEach(ulElem.children(), function (node) {
var elem = angular.element(node);
node.addEventListener('focus', function () {
elem.addClass('focused');
}, true); // useCapture = true
node.addEventListener('blur', function () {
elem.removeClass('focused');
}, true); // useCapture = true
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6558 次 |
| 最近记录: |