2つのリスト(#product
と#cart
)があります。ユーザーはアイテムをクリックして、一度に1つずつ2番目のリストに移動できます。しかし、私は人々が最初のリストのすべてのアイテムを2番目のリストに追加できるようにしたいと思っています。また、その逆も同様です—カートからすべてのアイテムを削除します。
手伝ってくれますか?
これが私のhtmlです:
<h2>Product List</h2>
<a id="add-all">Add all items to cart</a>
<ul id="product">
<li id="item1">item 1</li>
<li id="item3">item 3</li>
<li id="item5">item 5</li>
</ul>
<h2>Shopping Cart</h2>
<a id="remove-all">Remove all items</a>
<ul id="cart">
<li id="item2">item 2<input type="hidden" name="cartItems" value="item2"></li>
<li id="item4">item 4<input type="hidden" name="cartItems" value="item4"></li>
</ul>
上記のように、アイテムがカートに個別に追加されると、同じID.append
のinput
タグが付けられます。
大まかなjQueryは次のようになります。
$('#product').on('click','li', function() {
var itemID = $(this).attr('id');
var itemLabel = $(this).html();
var newItemLabel = itemLabel + '<input type="hidden" name="cartItems" value="' + itemID + '">';
$(this).remove();
$('#cart').append('<li id="' + itemID + '">' + newItemLabel + '</li>');
});
これは一度に1つずつ問題なく機能します。しかし、製品リストの各項目を繰り返し処理してすべてを追加(またはすべて削除)しようとして立ち往生しています。
私を正しい方向に向けてもらえますか?
特に、すべてのリスト項目に入力要素を追加する必要があるためです。したがって、それぞれをループして入力を追加せずhtml()
に、を取得し#product
て追加することはできません。#cart
Tl; dr
#add-all
クリックすると、すべてのアイテムがに移動し#product
、それぞれ#cart
ににが追加されますinput
#remove-all
クリックすると、すべてのアイテムがに移動#cart
し、すべてのタグ#product
が削除されますinput
- どうやって?