1

とにかく、これ以上苦労することなく、私はstackoverflowの大ファンでした(他の場所ではなく、ここで質問するようになりました).飛ぶ。アイテムを取得するためのループは次のようになります。

    <?php
                    $shop_query = mysql_query("SELECT * FROM sector0_item WHERE 1");
                    $numrows = mysql_num_rows($shop_query);
                    While ($shop_fetch = mysql_fetch_array($shop_query)){

                ?>
                    <div id="shop_main">
                        <div class = 'item_img'>
                            <a><img src = "http://images.wikia.com/dofus/images/4/4e/Discovery_Potion.png" height = '100px'/></a>
                        </div>

                        <div class="item_buy">
                            <a><center>Price: <?php echo number_format($shop_fetch['item_price']);?></center><br /></a>
                            <a>Quantity: <input type = 'text' size = '9' id = 'itemquantity'/><br /></a>
                            <a><p>Point requirement: <?php echo number_format($shop_fetch['item_pt_req']);?></p></a>
                            <a><input type = 'button' id = 'buy' value = 'buy'/></a><span id = 'buy_status'></span>

                        </div>
                            <a><h3><?php echo $shop_fetch['item_name'];?></h3></a>
                            <a><p><?php echo $shop_fetch['item_desc'];?></p></a>
                            <a>Item Type: <font color = 'green'><?php echo $shop_fetch['item_class'];?></font></a>
                    </div>
                    <br />
                <?php
                    }
                ?>

しかし、私の ajax は本当に奇妙な動作をしているようです。私の実装は、読み込み中の gif 画像を表示することでした。脚本:

                        <script type = 'text/javascript'>
                                $('#buy').click (function(){
                                    var quantity = $('#itemquantity').val();
                                    $('#buy_status').html('<img src = "http://www.antibodyresource.com/theme/js/ajax-loader.gif" height = 20px;/>');

                                });
                            </script>

問題は、クリックすると円が表示されるボタンが1つだけです。スクリプトの位置が原因​​ですか? どんな助けでも大歓迎です。

4

4 に答える 4

5

指定された ID を持つアイテムは 1 つだけです。同じ id の要素が複数ある場合、どれが返されるかは不明ですが、通常は最初のアイテムのみになります。

複数の購入ボタンが必要で、それらすべてに同じ jQuery イベント ハンドラーを割り当てたい場合は、ID の代わりに共通のクラス名を使用します。


コンテンツを動的にロードしていて、そのコンテンツに対してイベント ハンドラーを機能させたい場合は、委任されたイベント処理を使用する必要があります。

jQuery では、これは通常、 または のいずれ.on()かで行われます.delegate()。基本的な考え方は、動的にロードされない静的な親オブジェクト (おそらく show_main の親) を選択し、イベントをそのオブジェクトにバインドしてから、動的要素のセレクターを次のように渡すことです (注: id をクラスに追加して購入ボタンを識別します):

$(staticParentSelector).on('click', '.buyButton', function() {
    $(this).closest(".item_buy").find(".buy_status").html('<img src = "http://www.antibodyresource.com/theme/js/ajax-loader.gif" height = 20px;/>');
})
于 2012-04-06T05:33:38.753 に答える
0

内にコードを配置する必要があります$(document).ready()。っていうことは:

$(document).ready( function() {
    $('#buy').click( function(){
         // do something here
    });
});

また、ID に関する jfriend00 のアドバイスにリストすることもできます。

于 2012-04-06T05:39:45.407 に答える