0

我想弄清楚一些事情。我正在为我的学校项目做一个电子商店。我已经完成了几乎所有的脚本,但这个让我非常恼火。

我对所有项目都有一个类,这意味着从 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 这解释得更好

4

3 回答 3

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

它正在工作。感谢大家的帮助和努力!:)

于 2013-07-09T12:41:11.813 回答
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');
    });
});
于 2013-07-08T15:31:48.450 回答
0

尝试这个:

$(".class_name")

解释:

该代码中的点指定现在我们正在讨论类,然后 class_name 当然是其他元素共享的类名。就像你的情况一样,class_name那么adicionar_ao_carrinho上面的代码将变成这个:$("a.adicionar_ao_carrinho");


更具体地说,如果它是 div 或 span 或其他任何东西,您可以像这样更改上面的内容:

对于 div:$("div.class_name"); 对于跨度:$("span.class_name");

解释:

这适用于所有其他元素。但是,如果该类仅用于单个元素,则上述方法也可以正常工作,但是如果不同的元素使用相同的元素,则可能需要第二个。

更新: 看到您的 HTML 后,我发现您的 class_name 与您所说的不同!所以应该是这样的:$("div.adicionar_artigo");

于 2013-07-08T15:20:52.013 回答