【问题标题】:jQuery - Create link element and click itjQuery - 创建链接元素并单击它
【发布时间】:2018-07-19 16:20:57
【问题描述】:

我正在尝试动态生成在 Twitter 上发布推文的链接,然后像这样点击它...

$("body").prepend("<a id=\"twitter_link\" href='https://twitter.com/intent/tweet'></a>");

$( "#twitter_link" ).click(function() {
  console.log( "Handler for .click() called." );
});

这不起作用,我哪里出错了?

【问题讨论】:

  • 函数执行上下文?可能吗? prepend 是一个异步操作,所以我猜处理程序是在 渲染实际元素之前附加的?
  • @weirdpanda 我不认为 prepend 是异步的......
  • @mpen,是的。就读吧。我的错。 :|

标签: javascript jquery


【解决方案1】:

您的代码已完成 99%!

您的新 a 元素没有文本

重要

如果你需要在点击新链接时执行逻辑,点击事件是必要的,否则,该事件是不必要的。

$("body").prepend("<a id=\"twitter_link\" href='https://twitter.com/intent/tweet'>Hello World</a>");

$( "#twitter_link" ).click(function(e) {
  e.preventDefault(); //This is just to show your logic is working!
  console.log( "Handler for .click() called." );  
  location.href = this.href; //This is to redirect to the specific page after any previous executed logic.
});
&lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"&gt;&lt;/script&gt;

资源

【讨论】:

  • 虽然日志触发,但链接打不开
  • @fightstarr20 e.preventDefault() 只是为了表明你的逻辑是有效的。
  • @fightstarr20 没看懂,你想在点击新链接的时候执行一个逻辑?
  • 没错,我在单击按钮时插入了一些自定义推文文本。然后我想单击该链接,因此该人不必再次单击
【解决方案2】:

您也可以尝试先创建元素,添加事件侦听器,然后附加到正文

var $a = $("<a id=\"twitter_link\" href='#'>test</a>" );

$a.click(function(e) {
  e.preventDefault();
  console.log( "Handler for .click() called." );
});

$("body").prepend($a);

【讨论】:

    【解决方案3】:

    如果你真的想自动点击链接,你必须在元素上调用.click()——你正在绑定一个点击处理程序。这是一个没有 jQuery 的示例,改编自我正在从事的项目:

    function clickLink(url) {
        let anchor = document.createElement('a');
        anchor.href = url;
        document.body.appendChild(anchor); // Firefox requires us to actually insert the element into the DOM before we can click it
        anchor.click();
        document.body.removeChild(anchor);
    }
    
    clickLink('https://stackoverflow.com')

    但请注意您的 devtools 控制台,因为如果您尝试链接到另一个域,您可能会收到此错误:

    拒绝在框架中显示“https://www.google.ca/?gfe_rd=cr&dcr=0&ei=--R8WpqeLpTM8AeZoYbgAg”,因为它将“X-Frame-Options”设置为“sameorigin”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-21
      • 1970-01-01
      • 1970-01-01
      • 2013-06-12
      • 1970-01-01
      相关资源
      最近更新 更多