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

jQuery doubleTap双击重定向仅首个视频生效问题

问题原因
  • HTML标准明确规定同一页面中id属性值全局唯一,你给所有<video>标签都设了相同的id="doubleTap",内部存ID的input也全是重复的id="id"。不管是jQuery的id选择器还是原生getElementById,遇到重复id只会匹配页面中第一个符合条件的元素,剩下的视频根本绑不上双击事件,就算事件能触发,取ID的时候也永远只会拿到第一个input的值。
  • <video>标签有固定的内容模型,内部只允许放置<source>、<track>标签以及浏览器不支持video时的降级提示文本,你把input塞在video标签内部属于语法错误,浏览器渲染时会自动把input挪到video外面,结构完全不可控。
修复代码

先改HTML结构,用类名标记需要绑定事件的视频,直接把视频ID存在video的自定义data属性上,删掉多余的input:

<video class="double-tap-video" autoplay muted data-id="1">
  <source src="/ver/videos/2024.mp4" type="video/mp4">
</video>

<video class="double-tap-video" autoplay muted data-id="2">
  <source src="/ver/videos/2023.mp4" type="video/mp4">
</video>

<video class="double-tap-video" autoplay muted data-id="3">
  <source src="/ver/videos/2022.mp4" type="video/mp4">
</video>

再改JS逻辑,用类选择器选中所有视频绑定事件,触发时直接读取当前被双击视频上存的ID即可:

// 如果你已经提前引入了doubleTap相关插件,用这段
$(".double-tap-video").doubleTap(function() {
  const targetId = $(this).data("id");
  location.href = 'h.php?id=' + targetId;
});

// 如果没装doubleTap插件,直接用原生双击事件即可,不需要额外依赖
$(".double-tap-video").on("dblclick", function() {
  const targetId = $(this).data("id");
  location.href = 'h.php?id=' + targetId;
});
注意事项
  • 批量绑定同类元素优先用class选择器,非必要不要用id做批量选择
  • 元素关联的自定义参数优先用data-*属性存储,不要额外加隐藏input传值,既冗余也容易出定位错误
  • 写HTML时要注意标签的嵌套规则,不要把不允许的子标签塞进父标签里,避免浏览器自动修正结构导致意料之外的问题

内容的提问来源于stack exchange,提问作者Barry Clinton

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 13:21:21