我在下面有这个脚本,假设从输入字段中获取值,然后将它们添加到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);
});
任何想法??
答案 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
)