2017-01-22 3 views
0

I In diesem Skript wird angenommen, dass Werte aus Eingabefeldern abgerufen und dann in eine href-Verknüpfung eingefügt werden. aber ich erhalte diesen Fehler in der Konsole:JQuery-Fehler: Uncaught Error: Syntaxfehler, nicht erkannter Ausdruck

Uncaught Error: Syntax error, unrecognized expression: ?add-to-cart=7690&variation_id=8498&attribute_pa_color=gold

Hier ist das Skript:

jQuery(document).on("click", ".variations_form.cart .variation_buttons_wrapper a", function(){ 
    // Get all the values needed for the URL 
    var add_to_cart = jQuery(this).parent().parent().parent().parent().parent().parent().find('input[name="add-to-cart"]').val(); 
    var variation_id = jQuery(this).parent().parent().parent().parent().parent().parent().find('input[name="variation_id"]').val();  
    var pa_color = jQuery(this).attr("id"); 
    setTimeout(function(){ 
    // Craft the URL 
    var link = jQuery("?add-to-cart=" + add_to_cart + "&variation_id=" + variation_id + "&attribute_pa_color=" + pa_color); 
    alert(link); 
    }, 500); 
    }); 

Irgendwelche Ideen ??

Antwort

1

Sie verwenden das jQuery-Objekt falsch.
Wenn Sie einen Link zu Handwerk versuchen, tun es auf diese Weise:

var link = "?add-to-cart=" + add_to_cart + 
"&variation_id=" + variation_id + 
"&attribute_pa_color=" + pa_color; 

keine Notwendigkeit für das jQuery-Objekt hier.

+1

Danke das hat funktioniert. – mysticalghoul

+1

Ich werde aber anscheinend muss ich noch 5 Minuten warten. – mysticalghoul

0

jQuery("?add-to-cart="...) ist kein gültiger DOM-Selektor, daher der Fehler. Sie müssen es als String belassen. Oder noch besser, verwenden jQuery.param:

var link = jQuery.param({ 
    'add-to-cart': add_to_cart, 
    'variation_id': variation_id 
}) 

BTW, anstatt dies zu tun:

var add_to_cart = jQuery(this).parent().parent().parent().parent().parent().parent().find('input[name="add-to-cart"]').val();

Man könnte so etwas tun:

jQuery(this).closest('.variations_form').find('input...')

(ersetzen Sie variations_form mit dem Elternklassennamen, den Sie haben)

1

Das jQuery-Objekt ist beim Erstellen der URL nicht erforderlich. Benutze es einfach ohne das Objekt.

var link = "?add-to-cart=" + add_to_cart + "&variation_id=" + variation_id + "&attribute_pa_color=" + pa_color; 
1

Dies liegt daran, dass Sie querystring als jQuery-Selektor übergeben. Sie müssen einen gültigen Selektor für dasselbe erstellen.

zu href Link hinzuzufügen, zuerst den Link auswählen und die URL

var link = $("#link").attr("href"); 

Dann fügen Sie den Abfragezeichenfolgeflag es

link += "?add-to-cart=" + add_to_cart + "&variation_id=" + variation_id + "&attribute_pa_color=" + pa_color; 

Anregung erhalten:

Wenn Sie über ein Formular , eine Abkürzung, um alle Felder als Querystring zu erhalten, verwendet jQuery serialize Methode. Beispiel:

var queryString = $("#form").serialize(); 

Stellen Sie sicher, dass alle Ihre Formularfelder Namensattribute haben.

Wenige Worte der Weisheit: Vermeiden Sie viele parent() Aufrufe, um das Zielelement zu erreichen. Ihr Code bricht ab, wenn sich das DOM ändert und die Verschachtelung erhöht oder verringert wird.

Verwandte Themen