【问题标题】:Execute javascript code in a href tags在 href 标记中执行 javascript 代码
【发布时间】:2016-09-25 21:41:58
【问题描述】:

我有一个页面有几个(100+)这样的条目:

<a href="javascript:removeFromCart(12302, 2);" class="remove">Remove</a>

现在我正在寻找一个可以在控制台中运行并帮助我“单击”所有这些“链接”并使用相应参数执行 javascript 函数 removeCart() 的 jQuery sn-p。

这不起作用:

$("a[href^='javascript']:contains('Remove')").click()

有什么想法吗?

【问题讨论】:

标签: javascript jquery


【解决方案1】:

这里不能使用.click(),因为锚点没有事件绑定。您需要手动执行href 属性的内容,这可以使用eval() 轻松完成:

$('.remove').each(function() {
    eval(this.href);
});

【讨论】:

  • 这里不用eval
  • @AndrewWhitaker 你提出的解决方案是什么?
  • @AndrewWhitaker “需要” - 这是个玩笑吗?这是一个解决方案并且有效。你不应该基于你个人的仇杀来反对完美可用的 javascript 核心功能。
  • @David:设置window.location.href 喜欢重复提及:jsfiddle.net/Q9ZTc/2
  • imo 设置 window.location 来运行 JS 比 eval 更脏。为可行的解决方案 +1。
【解决方案2】:

您可以添加一个新字段并在那里传递参数,例如&lt;a href="#" data-a="12302" data-b="2" class="remove"&gt;Remove&lt;/a&gt;

$("a.remove").each(function(){
    var param1 = $(this).data('a');
    var param2 = $(this).data('b');
    removeFromCart(param1, param2);
});

【讨论】:

    【解决方案3】:

    .trigger("click") 实际上并不执行用户点击,而是任何绑定到“点击”事件的代码。您需要设置窗口位置:

    $("a[href^='javascript']:contains('Remove')").each(function() {
      window.location.href = $(this).prop("href");
    });
    

    【讨论】:

    • 由于我们在选择器的 href 中包含了对 javascript 协议的检查,因此我们无需担心。
    【解决方案4】:
     $('.remove').trigger('click',function(){
           // place your code
     });
    

    【讨论】:

      【解决方案5】:

      可以先将javascript函数中的参数移动到数据属性中

      <a href="#" data-param1="20433" data-param1="2" class="remove">Remove</a>
      

      然后处理类选择器。

      $("a.remove").each(function() {
        var param1 = $(this).attr('data-param1');
        var param2 = $(this).attr('data-param2');
        removeFromCart(param1, param2);
      });
      

      【讨论】:

        【解决方案6】:

        好吧,触发代码的唯一方法就是实际执行它。

        $("a[href^='javascript:removeFromCart']").each(function() {
            eval($(this).attr('href').substr(11));
        });
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-03-09
          • 1970-01-01
          • 2023-04-07
          • 1970-01-01
          • 2020-06-15
          • 1970-01-01
          • 2017-09-17
          • 2021-05-17
          相关资源
          最近更新 更多