2016-12-14 3 views
1

私は、ユーザーが文字列を入力し、jQueryを通して "買い物リスト"アイテムを作成することを可能にする単純なHTMLフォームを持っています。JS/jQueryの内部テキストと等しくなるようにHTML要素のIDを設定するにはどうすればよいですか?

は、例えば、ユーザーがフォームでオレンジ入り:

<form id="js-shopping-list-form"> 
     <label for="shopping-list-entry">Add an item</label> 
     <input type="text" name="shopping-list-entry" id="shopping-list-entry" placeholder="e.g., broccoli"> 
     <button type="submit">Add item</button> 
    </form> 

をとjQueryは、このスニペットを生成:

<ul class="shopping-list"> 
     <li> 
      <span class="shopping-item">oranges</span> 
      <div class="shopping-item-controls"> 
       <button class="shopping-item-toggle"> 
       <span class="button-label">check</span> 
       </button> 
       <button class="shopping-item-delete"> 
       <span class="button-label">delete</span> 
       </button> 
      </div> 
      </li> 

この場合には(文字列を取る方法はありますが、 "オレンジ")をの内側にあるid="oranges"に変えますか?

新しい.shopping-itemスパンにも固有の識別子を割り当てて、簡単に追跡できるようにしたいと思います。

+0

誰かがオレンジを2回入力するとどうなりますか? – bassxzero

+0

誰かが「オレンジジュース」などの名前を入力するとどうなりますか? –

+0

可能であれば、これを避けて$( '。shopping-list .shopping-item')としてください.nqnなどを取得するにはeq(n)を入力してください。 – Andiih

答えて

2
$('.shopping-item').eq(0).attr('id') = $('.shopping-item').eq(0).text(); 

これは、最初のものに対してのみ行うことを前提としています。 shopping-listのすべてのアイテムでこれを行う必要がある場合は、.shopping-item要素をループし、thisを使用できます。

+2

これで 'oranges'が2回入力された場合、' id'と重複したDOMが重複します。その場合、 '.uinqueid()'を追加して、各要素に対して一意の 'id'スタイルの 'uuid'スタイルを得ることができます。 – DevlshOne

+0

実際には、リストに[dupe item]をすでに持っていることをユーザーに警告して追加することを拒否するクールな方法ですが、OPがそれを許可したい場合、あなたが提案する方法は素晴らしいでしょう。 –

+0

これは役に立ちます。 '.uniqueid()'のような音が私がここで使う必要があります。ありがとう! –

関連する問題