javascript - JS 调度事件

标签 javascript jquery events dispatch

我试图使用 js 调度事件关注具有给定索引的链接:

var link = document.querySelector(".navbar-nav > li:nth-child(" + index + ") > a");
var event = new Event("focus");
link.dispatchEvent(event);

上面的代码不起作用,而 jQuery 版本则可以正常工作:

$(".navbar-nav > li:nth-child(" + index + ") > a").focus();

我正在最新的 Chrome 中进行测试。 JS版本有什么问题吗?

最佳答案

如果你想设置焦点,那么只需调用 focus method dom 元素的

function setFocus(index) {
  var link = document.querySelector(".navbar-nav > li:nth-child(" + index + ") > a");
  link.focus()
}
<ul class="navbar-nav">
  <li><a href="#">1</a></li>
  <li><a href="#">2</a></li>
  <li><a href="#">3</a></li>
  <li><a href="#">4</a></li>
</ul>
<button onclick="setFocus(1)">1</button>
<button onclick="setFocus(2)">2</button>
<button onclick="setFocus(3)">3</button>
<button onclick="setFocus(4)">4</button>

分派(dispatch)事件不会设置焦点,只会触发附加的事件处理程序。

在 jQuery 中,调用 focus() 方法将触发事件,并且如果需要的话还将调用 native 行为方法,这就是它起作用的原因

关于javascript - JS 调度事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32200484/

相关文章:

javascript - Angular ui sref 不适用于触摸事件

jquery - 使用 JSON

javascript - jQuery 防止用户双击或多次单击时执行单击事件

forms - Symfony2 表格 : enable/disable field from listener

php - 如何在 PHP 中实现事件驱动代码?

javascript - 如何使用由多行组成的 django 模板变量分配 javascript 变量?

php - Facebook Jquery ajax 权限请求?

javascript - 开窗器 |不在 chrome 中工作

javascript - Div 在我想要隐藏后显示 1 秒

Javascript 停止一个事件