Jquery - 在共享相同类名的其他元素之间选择一个元素(单击时)

时间:2013-07-08 15:11:26

标签: javascript jquery

我想弄清楚一些事情。我正在为我的学校项目做一个电子商店。我几乎完成了所有的脚本编写工作,但是这个版本让我如此烦恼。

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

3 个答案:

答案 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_nameadicionar_ao_carrinho,因此上述代码将更改为此代码:$("a.adicionar_ao_carrinho");


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

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

说明:

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

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