为什么悬停在委派的事件处理程序中不起作用?

Ama*_*ngh 5 javascript css jquery hover

我正在动态添加一些元素,并在委托的事件处理程序中为其分配一个悬停属性,我在下面的代码中使用它并且它不起作用.

$(document).on("hover", ".sec_close_fast", function() {
  $(this).parent('div').parent('div').css("border", "3px solid #000000");
});
Run Code Online (Sandbox Code Playgroud)

然后我用mouseover它并且它起作用了:

$(document).on("mouseover", ".sec_close_fast", function() {
  $(this).parent('div').parent('div').css("border", "3px solid #000000");
});
Run Code Online (Sandbox Code Playgroud)

我想知道为什么hover不起作用,但是mouseover.

Pra*_*man 6

函数/事件.hover实际上不是一个事件,但只是一个速记mouseentermouseleave.来自文档:

.hover()方法为两者mouseentermouseleave事件绑定处理程序.您可以使用它在鼠标位于元素中时简单地将行为应用于元素.

所以你不能用它来"委托"事件.

正如您已经提到的那样,正如文档中提到的那样,您可以使用:

$(static_parent).on("mouseenter mouseleave", element, function (e) {
  if (e.type == "mouseenter") {
    // check if it is mouseenter, do something
  } else {
    // if not, mouseleave, do something
  }
});
Run Code Online (Sandbox Code Playgroud)