我想弄清楚一些事情。我正在为我的学校项目做一个电子商店。我几乎完成了所有的脚本编写工作,但是这个版本让我如此烦恼。
我有一个所有项目的类,这意味着1到10的项目具有相同的类名。当我想要添加到购物车时,我点击,然后会有一个$ .post背后做所有的魔法。问题是,它只选择具有该类名的第一个元素。我在网上搜索过这个,我发现的只是“选择具有相同类名的所有元素”或“选择父元素中的元素”。我想要它做的是选择共享相同类名的单个元素 我会在这里发布代码,谢谢:)
$(".adicionar_ao_carrinho").bind("click",function(){
$(this).each(function(){
var a = $("[name='item']").val(); //debugg purpose
alert(a); //debugg purpose
$.post("ajax/carrinho.php",
{
id: $("[name='item']").val(),
preco: $("[name='preco']").val(),
qtd: $("[name='quantidade']").val(),
user: <?php echo $_SESSION['uid']; ?>
},function(data){
alert(data);
}
)
});
});
修改
<div class=\"adicionar_artigo\">
<form method='post'>
<input type='text' name='quantidade' size='1' value='1'/>
<a href=\"#\" name=\"trigger\" class=\"adicionar_ao_carrinho\"><img src=\"ficheiros/images/icons/adicionar_1.png\" /></a>
<input type='hidden' name='item' value='$id_artigo' />
<input type='hidden' name='preco' value='$preco' />
</form>
</div>
每个项目都有这样的表格。
EDIT2: http://s14.postimg.org/w29v5x2fl/error.png
这解释得更好
答案 0 :(得分:1)
我会猜测,你的代码在第一次点击失败,因为:
user: <?php echo $_SESSION['uid']; ?>
输出一个不带引号的字符串,应为:
user: "<?php echo $_SESSION['uid']; ?>"
会让你:
$(".adicionar_ao_carrinho").on("click",function(){
var form = $(this).closest('form'),
data = {
id : $("[name='item']", form).val(),
preco: $("[name='preco']", form).val(),
qtd : $("[name='quantidade']", form).val(),
user : "<?php echo $_SESSION['uid']; ?>"
}
$.post("ajax/carrinho.php", data ,function(result){
console.log(result);
}).fail(function(a,b,c) {
console.log('ajax failed');
});
});
答案 1 :(得分:1)
完成它。 更改了html:
<div class=\"adicionar_artigo\">
<a href=\"#\" class=\"adicionar_ao_carrinho\">
<img src=\"ficheiros/images/icons/adicionar_1.png\" />
</a>
<input type='hidden' name='preco' value='$preco' />
<input type='hidden' name='item' value='$artigo[ID_artigo]' />
<input type='text' name='quantidade' size='1' value='1'/>
</div>
还改变了jquery:
$(".adicionar_ao_carrinho").bind("click",function(){
var parent = $(this).parent();
$.post("ajax/carrinho.php",
{
id: $("input[name='item']",parent).val(),
preco: $("input[name='preco']",parent).val(),
qtd: $("input[name='quantidade']",parent).val(),
user: "<?php echo $_SESSION['uid']; ?>"
},function(data){
alert(data);
}
)
});
它正在发挥作用。 感谢大家的帮助和努力! :)
答案 2 :(得分:0)
试试这个:
$(".class_name")
该代码中的点指定现在我们正在讨论类,然后class_name是其他元素共享的类名。与您的情况类似,class_name
为adicionar_ao_carrinho
,因此上述代码将更改为此代码:$("a.adicionar_ao_carrinho");
更具体地说,如果它是div或span或其他任何东西,你可以像这样改变上面的内容:
对于div:$("div.class_name");
对于span:$("span.class_name");
这适用于所有其他元素。但是,如果该类仅用于单个元素,则上述方法也可以正常工作,但如果不同的元素使用相同的元素,则可能需要第二个元素。
<强>更新强>
看到你的HTML后,我发现你的class_name与你说的不同!所以应该这样:$("div.adicionar_artigo");