2017-01-02 3 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

@ DenysSeguret親を削除して" e.attrは関数ではありません "を取得しました – vandelay

答えて

2

イベントオブジェクトには、attrメソッドがありません。イベントを受け取った要素を参照するには、おそらくe.targetが必要です。 jQuery要素にはattrメソッドがあります。

ので:

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

...など。

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

NB:を追加したり、クラスを削除し、あなたもthisを使用することができると

対象要素は、あなたが選択を持っている上の要素と同じである場合、すなわち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 –

関連する問題