@@ -19,7 +19,6 @@ define([
19
19
qtyInfo : '#qty' ,
20
20
actionElement : '[data-action="add-to-wishlist"]' ,
21
21
productListItem : '.item.product-item' ,
22
- productListPriceBox : '.price-box' ,
23
22
isProductList : false
24
23
} ,
25
24
@@ -68,16 +67,25 @@ define([
68
67
_updateWishlistData : function ( event ) {
69
68
var dataToAdd = { } ,
70
69
isFileUploaded = false ,
71
- productId = null ,
70
+ productItem = null ,
71
+ handleObjSelector = null ,
72
72
self = this ;
73
73
74
74
if ( event . handleObj . selector == this . options . qtyInfo ) { //eslint-disable-line eqeqeq
75
- this . _updateAddToWishlistButton ( { } ) ;
75
+ this . _updateAddToWishlistButton ( { } , productItem ) ;
76
76
event . stopPropagation ( ) ;
77
77
78
78
return ;
79
79
}
80
- $ ( event . handleObj . selector ) . each ( function ( index , element ) {
80
+
81
+ if ( this . options . isProductList ) {
82
+ productItem = $ ( event . target ) . closest ( this . options . productListItem ) ;
83
+ handleObjSelector = productItem . find ( event . handleObj . selector ) ;
84
+ } else {
85
+ handleObjSelector = $ ( event . handleObj . selector ) ;
86
+ }
87
+
88
+ handleObjSelector . each ( function ( index , element ) {
81
89
if ( $ ( element ) . is ( 'input[type=text]' ) ||
82
90
$ ( element ) . is ( 'input[type=email]' ) ||
83
91
$ ( element ) . is ( 'input[type=number]' ) ||
@@ -87,19 +95,7 @@ define([
87
95
$ ( element ) . is ( 'textarea' ) ||
88
96
$ ( '#' + element . id + ' option:selected' ) . length
89
97
) {
90
- if ( ! ( $ ( element ) . data ( 'selector' ) || $ ( element ) . attr ( 'name' ) ) ) {
91
- return ;
92
- }
93
-
94
- if ( self . options . isProductList ) {
95
- productId = self . retrieveListProductId ( this ) ;
96
-
97
- dataToAdd [ productId ] = $ . extend (
98
- { } ,
99
- dataToAdd [ productId ] ? dataToAdd [ productId ] : { } ,
100
- self . _getElementData ( element )
101
- ) ;
102
- } else {
98
+ if ( $ ( element ) . data ( 'selector' ) || $ ( element ) . attr ( 'name' ) ) {
103
99
dataToAdd = $ . extend ( { } , dataToAdd , self . _getElementData ( element ) ) ;
104
100
}
105
101
@@ -114,34 +110,29 @@ define([
114
110
if ( isFileUploaded ) {
115
111
this . bindFormSubmit ( ) ;
116
112
}
117
- this . _updateAddToWishlistButton ( dataToAdd ) ;
113
+ this . _updateAddToWishlistButton ( dataToAdd , productItem ) ;
118
114
event . stopPropagation ( ) ;
119
115
} ,
120
116
121
117
/**
122
118
* @param {Object } dataToAdd
119
+ * @param {Object } productItem
123
120
* @private
124
121
*/
125
- _updateAddToWishlistButton : function ( dataToAdd ) {
126
- var productId = null ,
127
- self = this ;
122
+ _updateAddToWishlistButton : function ( dataToAdd , productItem ) {
123
+ var self = this ,
124
+ buttons = productItem ? productItem . find ( this . options . actionElement ) : $ ( this . options . actionElement ) ;
128
125
129
- $ ( '[data-action="add-to-wishlist"]' ) . each ( function ( index , element ) {
130
- var params = $ ( element ) . data ( 'post' ) ,
131
- dataToAddObj = dataToAdd ;
132
-
133
- if ( self . options . isProductList ) {
134
- productId = self . retrieveListProductId ( element ) ;
135
- dataToAddObj = typeof dataToAdd [ productId ] !== 'undefined' ? dataToAdd [ productId ] : { } ;
136
- }
126
+ buttons . each ( function ( index , element ) {
127
+ var params = $ ( element ) . data ( 'post' ) ;
137
128
138
129
if ( ! params ) {
139
130
params = {
140
131
'data' : { }
141
132
} ;
142
133
}
143
134
144
- params . data = $ . extend ( { } , params . data , dataToAddObj , {
135
+ params . data = $ . extend ( { } , params . data , dataToAdd , {
145
136
'qty' : $ ( self . options . qtyInfo ) . val ( )
146
137
} ) ;
147
138
$ ( element ) . data ( 'post' , params ) ;
@@ -264,21 +255,6 @@ define([
264
255
265
256
return ;
266
257
}
267
- } ,
268
-
269
- /**
270
- * Retrieve product id from element on products list
271
- *
272
- * @param {jQuery.Object } element
273
- * @private
274
- */
275
- retrieveListProductId : function ( element ) {
276
- return parseInt (
277
- $ ( element ) . closest ( this . options . productListItem )
278
- . find ( this . options . productListPriceBox )
279
- . data ( 'product-id' ) ,
280
- 10
281
- ) ;
282
258
}
283
259
} ) ;
284
260
0 commit comments