1

これはhtmlです

<!DOCTYPE html>
    <html>
    <title>Ingredient</title>
      <meta charset="utf-8" />
      <meta name="viewport" content="width=device-width, initial-scale=1">
      <link rel="stylesheet" href="themes/receta.min.css" />
      <link rel="stylesheet" href="css/jquery.mobile.structure-1.1.0.min.css" /> 
      <script src="js/jquery-1.7.1.min.js"></script> 
      <script src="js/jquery.mobile-1.1.0.min.js"></script> 
      <script type="text/javascript" charset="utf-8" src="js/ingredients.js"></script>  

      <h1><center>INGREDIENTES</h1>
    <ul>
     <li onclick="this.parentNode.removeChild(this);">
      <input type="hidden" name="ingredients[]" value="Cheese" />
      Cheese
     </li>
     <li onclick="this.parentNode.removeChild(this);">
      <input type="hidden" name="ingredients[]" value="Ham" />
      Ham
     </li>
    </ul>
    <select onchange="selectIngredient(this);">
     <option value="Cheese">Cheese</option>
     <option value="Olives">Olives</option>
     <option value="Pepperoni">Pepperoni</option>
     <option value="Milk">Milk</option>
    </select>

      </html>

これはjqueryです

    function selectIngredient(select)
    {
      var $ul = $(select).prev('ul');

      if ($ul.find('input[value=' + $(select).val() + ']').length == 0)
        $ul.append('<li onclick="$(this).remove();">' +
          '<input type="hidden" name="ingredients[]" value="' + 
          $(select).val() + '" /> ' +
          $(select).find('option[selected]').text() + '</li>');
    }

これは、他の材料と一緒に入れる必要がある別の材料を選択するときに確認する必要があるものです

このhtmlとjqueryを実行すると機能しません。選択した場合、別の成分をリストに追加する必要がありますが、それは起こりません。

4

2 に答える 2

3

私はここで考えます:

$(select).find('option[selected]').text()

あなたは実際にこれを意味します:

$(select).find('option:selected').text()

しかし、なぜ$(select).val()再び使用しないのですか?HTML では、テキストと値はまったく同じです。

于 2012-11-08T02:02:25.130 に答える
2

jsBin デモ

(精製) HTML

<h1>INGREDIENTES</h1>
<ul>
 <li>
  <input type="hidden" name="ingredients[]" value="Cheese" />
  Cheese
 </li>
 <li>
  <input type="hidden" name="ingredients[]" value="Ham" />
  Ham
 </li>
</ul>


<select>
 <option value="Cheese">Cheese</option>
 <option value="Olives">Olives</option>
 <option value="Pepperoni">Pepperoni</option>
 <option value="Milk">Milk</option>
</select>

(笑) jQ

function selectIngredient(select){
      
      var selVal = $(select).val();
      var $ul    = $(select).prev('ul');
      var exists = $ul.find('input[value=' + selVal +']').length;
  
      if ( !exists ){        
          $ul.append('<li>' +
          '<input type="hidden" name="ingredients[]" value="' + selVal + '" /> ' +
          selVal + '</li>');        
      }
}


$('ul').on('click','li',function(){
   $(this).remove();
});

$('select').change(function(){
   selectIngredient(this);
});

より構造化したい場合は、次を使用できます。

    var input = $('<input />',{
          type : 'hidden',
          name : 'ingredients[]',
          value: selVal
    });
    $('<li />', { text: selVal }).prepend( input ).appendTo( $ul );      
于 2012-11-08T02:10:51.740 に答える