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

时间:2017-01-22 06:47:37

标签: jquery wordpress woocommerce

我在下面有这个脚本,假设从输入字段中获取值,然后将它们添加到href链接中。但我一直在控制台中收到此错误:

  

未捕获错误:语法错误,无法识别的表达式:   ?添加到购物车= 7690&安培; variation_id = 8498&安培; attribute_pa_color =金

这是脚本:

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

任何想法??

4 个答案:

答案 0 :(得分:1)

你正在以错误的方式使用jQuery对象 如果您正在尝试制作链接,请执行以下操作:

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

这里不需要jQuery对象。

答案 1 :(得分:1)

在制作URL时不需要jQuery对象。只需在没有物体的情况下使用它。

automaticallyAdjustsScrollViewInsets

答案 2 :(得分:1)

这是因为您将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;

建议:

如果您使用的是表单,则将所有字段作为查询字符串的快捷方式是使用jQuery serialize方法。例如:

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

确保所有表单字段都具有名称属性。

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

答案 3 :(得分:0)

jQuery("?add-to-cart="...)不是有效的DOM选择器,因此是错误。您需要将其保留为字符串。或者甚至更好,使用jQuery.param

var link = jQuery.param({
  'add-to-cart': add_to_cart,
  'variation_id': variation_id 
})
顺便说一句,而不是这样做:

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

你可以这样做:

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

(用您拥有的任何父类名替换variations_form