【问题标题】:Launch steam with a jQuery click on asynchronously added link使用 jQuery 单击异步添加的链接启动 Steam
【发布时间】:2014-03-19 08:02:03
【问题描述】:

我正在尝试使用他们的网络协议启动 Steam 客户端:https://developer.valvesoftware.com/wiki/Talk:Steam_browser_protocol

我正在使用 jQuery。这是一个例子:

$(function() {
    // a bunch of stuff happens
    $("#content").append('<a id="launcher" href="steam://connect/' + server.ip + ':' +     server.port + '"></a>');
    $("#launcher").click();
});

现在我知道这行不通...事件委托?但本质上这是我想做的。有什么想法吗?

【问题讨论】:

  • 你应该使用$("#launcher")[0].click();

标签: javascript jquery steam-web-api


【解决方案1】:

你应该直接调用原生DOM的click

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

你可以使用.get(),它获取jQuery对象匹配的DOM元素,直接调用原生DOM的click

$("#launcher").get(0).click();

【讨论】:

  • 这有点晦涩,但很有意义。奇迹般有效。谢谢!
  • @Johandk,什么晦涩难懂?我会尽力解释
  • 是 jQuery 的事件委托导致 $("#launcher").click() 不起作用吗?
  • @Johandk,jQuery 有自己的事件注册系统,它与 DOM 的事件注册是分开的。当我们调用$(something).click() 时,所有注册的jQuery 处理程序和注册的onclick 处理程序都会触发,但不会触发其他任何事情。
【解决方案2】:

试试

$(document).on("click", "#launcher", function () {
    // code
});

【讨论】:

    【解决方案3】:

    尝试使用.trigger():

    $("#launcher").trigger('click');
    

    【讨论】:

    • 已经试过了。因为链接是动态添加的,所以它不起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-06
    • 1970-01-01
    • 2011-07-29
    • 1970-01-01
    • 2011-09-27
    • 1970-01-01
    相关资源
    最近更新 更多