在href标签中执行javascript代码

时间:2013-07-11 12:44:54

标签: javascript jquery

我有一个包含多个(100+)条目的页面,如下所示:

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

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

这不起作用:

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

有什么想法吗?

6 个答案:

答案 0 :(得分:7)

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

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

答案 1 :(得分:2)

您可以添加新字段并将参数传递到<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);
});

答案 2 :(得分:1)

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

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

答案 3 :(得分:0)

 $('.remove').trigger('click',function(){
       // place your code
 });

答案 4 :(得分:0)

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

答案 5 :(得分:0)

嗯,触发代码的唯一方法就是执行它。

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