You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现视频鼠标悬停播放、移出暂停功能?现有代码求完善

解决视频鼠标移出暂停(可选重置播放位置)的问题

看起来你已经搞定了鼠标悬停播放的功能,现在要补全移出暂停的逻辑对吧?我先帮你梳理下现有代码里的小问题,再给出几种完善的方案:

1. 修复纯HTML属性写法的问题

你现有HTML里的onmouseout="this.pause();this.currentTime=;"有个语法错误——currentTime后面没赋值。如果希望移出时暂停并回到视频开头,应该写成this.currentTime = 0;;如果只需要暂停不用重置位置,直接去掉this.currentTime=;这部分就行。

修复后的HTML代码:

<div id="vid"> 
  <video onmouseover="this.play()" onmouseout="this.pause(); this.currentTime = 0;"> 
    <source src="PISTOL.mp4">
  </video> 
</div>

如果不需要重置到开头,把this.currentTime = 0;删掉即可

2. 统一用jQuery事件监听(更优雅,避免内联事件)

你已经引入了jQuery,不如把事件处理都移到JS里,这样代码更易维护:

<div class="video"> 
  <video> 
    <source src="PISTOL.mp4">
  </video> 
</div>

<script>
// 鼠标悬停播放
$(".video").on("mouseover", function() {
  $(this).find("video")[0].play();
});

// 鼠标移出暂停(可选重置)
$(".video").on("mouseout", function() {
  const video = $(this).find("video")[0];
  video.pause();
  video.currentTime = 0; // 不需要重置就删掉这行
});
</script>

3. 完善你原来的原生JS写法

你的原生JS代码写到一半截断了,补全后的版本应该是这样:

<div class="video"> 
  <video> 
    <source src="PISTOL.mp4">
  </video> 
</div>

<script>
var figure = document.querySelectorAll(".video");
var vid = document.querySelectorAll(".video video");

figure.forEach(function(item, index) {
  // 鼠标悬停播放
  item.addEventListener('mouseover', function() {
    vid[index].play();
  }, false);
  
  // 鼠标移出暂停+重置
  item.addEventListener('mouseout', function() {
    vid[index].pause();
    vid[index].currentTime = 0; // 不需要重置就删掉这行
  }, false);
});
</script>

注意点

  • 如果你用了jQuery,尽量保持写法统一,不要混合内联事件和jQuery事件监听,避免冲突
  • currentTime = 0是可选的,根据你的需求决定是否要在移出时把视频拉回开头
  • 确保视频文件路径正确,否则播放功能会失效

内容的提问来源于stack exchange,提问作者N Cojoba

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:12:49