我有一个包含多个(100+)条目的页面,如下所示:
<a href="javascript:removeFromCart(12302, 2);" class="remove">Remove</a>
现在我正在寻找一个可以在控制台中运行的jQuery片段,并帮助我“点击”所有这些“链接”并使用相应的参数执行javascript函数removeCart()。
这不起作用:
$("a[href^='javascript']:contains('Remove')").click()
有什么想法吗?
答案 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));
});