2017-01-02 115 views
0

如何将事件从mouseup事件传递给函数?传递事件到功能?

到目前为止我的代码

$(".add, .remove").on("mouseup", getCart); 

function getCart(e) 
{ 
    post_data = {"id" : e.attr('data-productNumber'), "action" : e.attr('data-action')} 
} 

我得到一个TypeError: Cannot read property 'attr' of undefined。所以我猜测事件没有得到通过。

+0

这里你没有传递任何参数给函数。这就是为什么它抛出一个错误 –

+1

您必须注册功能,而不是它的呼叫:'getCart',而不是'getCart()' –

+0

@DenysSéguret我删除了parenteses,并获得“e.attr是不是一个函数”现在 – vandelay

回答

2

事件对象不具有和attr方法。您可能需要e.target来引用获取该事件的元素。一个jQuery元素将有attr方法。

所以:

$(e.target).attr('data-productNumber') 

...等。

如果目标元素是一样的,你有选择的元素,即与添加删除类,你也可以使用this

$(this).attr('data-productNumber') 

注:jQuery的loads the data- attributes在它的数据对象中,所以你可以这样做:

$(e.target).data('productNumber') 
$(this).data('productNumber') 
+0

你怎么知道这是关于目标?它可能只是'this',或任何其他 –

+0

谢谢,该作品:) – vandelay

+0

不客气;-) – trincot

-2

将目标元素传递给函数。

$(".add, .remove").on("mouseup", getCart($(".add, .remove"))); 

function getCart(e) 
{ 
    post_data = {"id" : e.attr('data-productNumber'), "action" : e.attr('data-action')} 
} 
+0

这是错误的。你测试过了吗? – trincot

+0

这是对我的作品.. –

+0

http://jsbin.com/gepatekupi/edit?html,js,output –