0

私は何かを理解しようとしています。学校のプロジェクトで e ショップをやっています。私はほとんどすべてのスクリプトを作成しましたが、これは私を非常に悩ませています。

すべてのアイテムのクラスがあります。つまり、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

あなたのコードは最初のクリックで失敗します。これは次の理由によるものです。

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 に答える
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 に答える
0

これを試して:

$(".class_name")

説明:

そのコードのドットは、クラスについて話していることを示しており、class_name はもちろん、他の要素によって共有されるクラス名です。あなたの場合のclass_nameようadicionar_ao_carrinhoに、上記のコードは次のように変更されます。$("a.adicionar_ao_carrinho");


より具体的には、それが div または span またはその他のものである場合、上記を次のように変更できます。

div の場合: $("div.class_name"); span の場合:$("span.class_name");

説明:

そして、これは他のすべての要素にも当てはまります。ただし、クラスが単一の要素にのみ使用されている場合は上記も同様に機能しますが、異なる要素が同じ要素を使用している場合は 2 番目のクラスが必要になる場合があります。

更新: あなたの HTML を見た後、あなたの class_name があなたが言ったものと違うことがわかりました! したがって、次のようになります。$("div.adicionar_artigo");

于 2013-07-08T15:20:52.013 に答える