JQuery错误:未捕获错误:语法错误,无法识别的表达式

JQuery错误:未捕获错误:语法错误,无法识别的表达式,jquery,wordpress,woocommerce,Jquery,Wordpress,Woocommerce,我下面有一个脚本,它假设从输入字段中获取值,然后将它们添加到href链接中。但我在console中不断遇到这个错误: 未捕获错误:语法错误,无法识别的表达式: ?添加到购物车=7690和变体\u id=8498和属性\u pa\u颜色=金色 以下是脚本: jQuery(document).on("click", ".variations_form.cart .variation_buttons_wrapper a", function(){ // Get all the valu

我下面有一个脚本,它假设从输入字段中获取值,然后将它们添加到href链接中。但我在console中不断遇到这个错误:

未捕获错误:语法错误,无法识别的表达式: ?添加到购物车=7690和变体\u id=8498和属性\u pa\u颜色=金色

以下是脚本:

    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); 
   });

有什么想法吗???

你用错了jQuery对象。
如果您试图创建链接,请按以下方式进行:

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

这里不需要jQuery对象。

您使用jQuery对象的方式不对。
如果您试图创建链接,请按以下方式进行:

var link = "?add-to-cart=" + add_to_cart +
"&variation_id=" + variation_id +
"&attribute_pa_color=" + pa_color;  
此处不需要jQuery对象。

jQuery(“?添加到购物车=”…)
不是有效的DOM选择器,因此出现错误。你需要把它作为一个字符串。或者更好,使用:


顺便说一句,不要这样做:

var add_to_cart=jQuery(this).parent().parent().parent().parent().parent().parent().parent().find('input[name=“add to cart”]').val()

你可以这样做:

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

(用您拥有的任何父类名称替换
variations\u form

jQuery(“?add to cart=“…”)
不是有效的DOM选择器,因此出现错误。你需要把它作为一个字符串。或者更好,使用:


顺便说一句,不要这样做:

var add_to_cart=jQuery(this).parent().parent().parent().parent().parent().parent().parent().find('input[name=“add to cart”]').val()

你可以这样做:

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


(将
变体\u form
替换为您拥有的任何父类名称)

在创建URL时不需要jQuery对象。只需在没有对象的情况下使用它

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

在创建URL时,不需要jQuery对象。只需在没有对象的情况下使用它

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

这是因为您将querystring作为jQuery选择器传递。您需要为同一对象创建有效的选择器

要添加到href链接,请首先选择链接并获取URL

var link = $("#link").attr("href");
然后将查询字符串添加到其中

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

如果您使用的是表单,那么作为querystring获取所有字段的快捷方式是使用jQuery
serialize
方法。例如:

var queryString = $("#form").serialize();
确保所有表单字段都具有名称属性

几句智慧的话:
避免多次调用
parent()
以到达目标元素。如果DOM更改,嵌套级别增加或减少,代码将中断。

这是因为您将querystring作为jQuery选择器传递。您需要为同一对象创建有效的选择器

要添加到href链接,请首先选择链接并获取URL

var link = $("#link").attr("href");
然后将查询字符串添加到其中

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

如果您使用的是表单,那么作为querystring获取所有字段的快捷方式是使用jQuery
serialize
方法。例如:

var queryString = $("#form").serialize();
确保所有表单字段都具有名称属性

几句智慧的话:
避免多次调用
parent()
以到达目标元素。如果DOM更改,嵌套级别增加或减少,代码将中断。

我会,但显然我必须再等5分钟。我会,但显然我必须再等5分钟。