Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在函数中检测哪个元素调用函数而不将其作为参数传递?_Javascript_Jquery_Opencart - Fatal编程技术网

Javascript 在函数中检测哪个元素调用函数而不将其作为参数传递?

Javascript 在函数中检测哪个元素调用函数而不将其作为参数传递?,javascript,jquery,opencart,Javascript,Jquery,Opencart,这是我的html标记: <a onclick="cart.add('10');" class="product-10">Add to cart</a> <a onclick="cart.add('11');" class="product-11">Add to cart</a> <a onclick="cart.add('12');" class="product-12">Add to cart</a> 是否有一种方法可以

这是我的html标记:

<a onclick="cart.add('10');" class="product-10">Add to cart</a>
<a onclick="cart.add('11');" class="product-11">Add to cart</a>
<a onclick="cart.add('12');" class="product-12">Add to cart</a>
是否有一种方法可以在不编辑html标记的情况下检测名为
cart.add
a

更新

a
标记没有
class
,我添加这些类只是为了演示,实际上我需要
a
对象本身,因为我想访问它的下一个同级,我的标记是这样的:

<div><a onclick="cart.add('10');">Add to cart</a><input type="text" name="quantity" /></div>

首先,删除内联
onclick
(这是一种不好的做法)并注册一个事件侦听器:

HTML

<a id="10" class="product-10">Add to cart</a>
编辑

基本上,通过执行
removeInlineHandlers
来检查此解决方法,您可以删除inline
onclick
属性,并分配一个事件处理程序,该事件处理程序调用传递单击元素的
add
函数:

函数removeInlineHandlers(){
$('a')。每个(函数(){
var,该值=$(此值);
var thisId=that.attr('onclick').match(/\d+/);
.removeAttr('onclick')
.on('单击',函数()){
cart.add(thisId,that);
});
})
}
变量车={
“添加”:函数(产品id,元素){
警报('Added id:'+product_id+',数量:'+elem.next('input').val());
}
}
removeInlineHandlers()

添加到购物车
添加到购物车

添加到购物车
最佳或理想的方法是使用
jQuery
事件侦听器。就我个人而言,我会找到一种改变HTML的方法

但是如果您确实不能更改HTML,那么可以使用
onclick
属性作为选择器。这是个坏习惯

比如:

var-cart={
“添加”:函数(产品id){

//$(“[onclick=\”cart.add(“+product\u id+”);\”])使用
onclick=“cart.add(this,'10');”
'add”:函数(元素,product\u id){
是的,我知道,但我正在寻找一种不用编辑html部分的方法。然后你就不用
onclick=“cart.add('10');”
并使用不引人注目的事件句柄谢谢您的回答,请查看我的更新问题。谢谢您的回答,请查看我的更新问题。另外,我正在寻找一种不编辑html部分的方法。
var cart = {
    'add': function(product_id) {
        //What I want console.log(element_that_was_clicked.next().val());
    }
}
<a id="10" class="product-10">Add to cart</a>
$(document).on('click', 'a', function() {
   var product_id = $(this).attr('id'); // Or any other attribute
   cart.add(product_id);
});