gpt4 book ai didi

javascript - 创建一个 javascript 函数来单击按钮

转载 作者:行者123 更新时间:2023-12-02 18:49:29 25 4
gpt4 key购买 nike

我想要做到这一点,以便当轨道完成播放时,它会自动调用 JavaScript 函数,该函数单击下一个轨道按钮,以便播放列表继续播放。到目前为止我已经:

function next() {
$("#nextTrack").click();
}

但是当它被调用时似乎没有做任何事情,有人知道我哪里出错了吗?

最佳答案

click的触发方式DOM 元素本身的事件是:

$("#nextTrack")[0].click();

这将获取第一个(唯一的)匹配的 DOM 元素(将其从 jQuery 包装器中删除)并调用 native click方法。

我能提供的唯一理由是因为 trigger没有(或者在过去的版本中没有)尝试调用 native 方法。我发誓在最新版本中,我可以使用.trigger("click") (与 .click() 相同)并且它将有效地单击该元素...同时执行 native 任何单击处理程序和 jQuery 处理程序。

trigger很棘手,因为 jQuery 存储与 jQuery.on 绑定(bind)的任何事件处理程序, jQuery.bind等在特殊的地方。当 native 事件被触发时,或 .trigger("event_name")使用时,所有这些特殊处理程序都会被执行。但由于某种原因, native 事件并不总是被触发(正如您似乎已经发现的那样)。我不确定是因为 jQuery 版本还是事件类型的原因。

更新:

发生这种情况的原因是 jQuery 处理 <a>特别是在使用 .trigger("event_name") 时,专门针对click事件。

在胡言乱语了上面的内容之后,我决定研究一下 trigger 的 jQuery 源代码。 。最终调用原生DOM方法,elem[ type ](); 。但只有在某些条件下才会达到这一点...这些是条件(以及其他嵌套 if 语句):

if ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) &&
!(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) {

我猜具体是 !(type === "click" && jQuery.nodeName( elem, "a" )) 部分在您的情况下是什么阻止了它,因为您的目标元素是 <a> ,这是 click事件。

演示:这基本上只是以更简单的方式模仿您的代码:http://jsfiddle.net/EjVMY/ - 注意最初的 console.log加载时不会执行(因为 trigger )。但是,一旦您实际单击该事件,console.log确实执行。我发现替换 <a><div>改变行为 - 它在加载时记录。

当然,如果我一开始就用谷歌搜索,我会发现:trigger a click on a anchor link

关于javascript - 创建一个 javascript 函数来单击按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15975345/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com