Drupal jQuery attach, miért fut le kétszer?

ecrazor1911 képe

Üdv,

Vagy egy Drupal Commerce kosásba űrlapom, és ehhez tartozik pár szín variáció (pl. piros, zöld, kék, stb...). A Drupal a színek közti váltogatást a beépített AJAX-ával oldja meg.

A problémám a következő: Ha síma jQuery betöltést végzek, akkor az AJAX-os téren az első betöltésnél működik a szkript, míg ha átváltok másik színre, na akkor arra már nem töltődik rá a szkript.

Kerestem kutattam, az alábbi megoldást találtam:

  1. (function ($) {
  2.  
  3. Drupal.behaviors.colorChangeInPicture = {
  4. attach: function (context, settings) {
  5. // Szin valtoztatasa a kepen is
  6. $("input[name='line_item_fields[field_1st_color][und]']").change(function (data) {
  7. // Ez a resz valami oknal fogva ketszer fut le!
  8. // Akar hogy is csinalom :-(
  9. console.log('change!');
  10. });
  11. }
  12. };
  13. })(jQuery)

Ez már így jó is, működik akkor is, ha a színeket változtatom (vagyis használom a beépített AJAX-ot).

Mi a probléma? A "change" rész amint színt változtatok, és lefut rajta az AJAX, több mint kétszer fut le. Ennek mi lehet az oka?

Drupal verzió: 
pp képe

"Ha síma jQuery betöltést végzek, akkor az AJAX-os téren az első betöltésnél működik a szkript, míg ha átváltok másik színre, na akkor arra már nem töltődik rá a szkript."

https://www.drupal.org/node/756722

Ha az itt leírtak szerint használod a jQuery-t akkor nem értem a kérdést.

Ha nem úgy használod, akkor meg nem akarom. :) vagyis használd úgy ahogy itt le van írva.

pp

0
0
ecrazor1911 képe

A megoldás végül az "once" lett:

  1. [...]
  2. $("input[name='line_item_fields[field_1st_color][und]']").once().change(function(data) {
  3. [...]

A megoldásért sok-sok köszönet, pp-nek :-)

https://www.drupal.org/node/171213

1
0