為什麼trigger()無法觸發hover事件

antzone發表於2017-04-06

使用trigger()方法可以觸發事件,具體可以參閱jQuery trigger()一章節。

但是使用trigger()卻無法觸發hover事件,下面先看一段程式碼例項:

[HTML] 純文字檢視 複製程式碼
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<style type="text/css">
#antzone{
  width:100px;
  height:100px;
  background:red;
}
</style>
<script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>
<script>
$(document).ready(function(){
  $("#antzone").hover(function(){
    $(this).css("background-color","green");
  },function(){
    $(this).css("background-color","red");
  })
  $("#antzone").trigger("hover");
});
</script>
</head>
<body>
<div id="antzone"></div>
</body>
</html>

上面的程式碼並沒有出發hover事件。

其實也是可以理解的,hover事件具有兩種行為,你說觸發到底執行哪個好呢。

在jQuery中hover事件是由mouseenter事件和mouseleave事件綜合而成,所以你要單獨出發才行,程式碼如下:

[HTML] 純文字檢視 複製程式碼
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<style type="text/css">
#antzone{
  width:100px;
  height:100px;
  background:red;
}
</style>
<script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>
<script>
$(document).ready(function(){
  $("#antzone").hover(function(){
    $(this).css("background-color","green");
  },function(){
    $(this).css("background-color","red");
  })
  $("#antzone").trigger("mouseenter");
});
</script>
</head>
<body>
<div id="antzone"></div>
</body>
</html>

相關文章