在a href标记中执行javascript代码

Execute javascript code in a href tags

本文关键字:执行 javascript 代码 href      更新时间:2023-09-26

我有一个页面,上面有几个(100多个)条目,如下所示:

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

现在我正在寻找一个可以在控制台中运行的jQuery片段,它可以帮助我"点击"所有这些"链接",并使用相应的参数执行javascript函数removeCart()。

这不起作用:

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

有什么想法吗?

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

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

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

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

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

$("a[href^='javascript']:contains('Remove')").each(function() {
  window.location.href = $(this).prop("href");
});
 $('.remove').trigger('click',function(){
       // place your code
 });

您可以先将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);
});

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

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