0

私はいくつかのスレッドを見ましたが、私が持っているコードではこれを機能させることができませんでした。私のjqueryは、xmlファイルからの情報を使用してhtmlドロップダウンを作成します。ドロップダウンの重複するオプションを削除する必要があります。これは必須ではありませんが、ドロップダウンから選択したカテゴリのアイテムを表示する方法も理解する必要があります。

そのため、現在、xmlに表示される回数だけすべてのカテゴリが表示されています。目標は、各カテゴリを1回表示することです。また、そのカテゴリを含むアイテムを表示する方法に関するヒントをいただければ幸いです。

jQuery:

$(document).ready(function () {
    $.ajax({
        type: "GET",
        url: "XML/store.xml",
        dataType: "xml",
        success: function (xml) {
            $(xml).find("info").each(function () {
                var option = $(this).find('category').text();

                $('#dropdown').append('<option>' + option + '</option>');



            });
        }
    });
});

HTML:

<form>
<select id="dropdown">
    <option></option>
</select>
</form>

XMLサンプル:

<products>
<info>
<image>
  <src>images/bosubalancetrainer.jpg</src>
</image>
<name>Bosu Sport Balance Trainer</name>
<brand>Bosu</brand>
<price>$85.95</price>
<category>Bosu Ball</category>
</info>
<info>
<image>
  <src>images/bosupro.jpg</src>
</image>
<name>Bosu Pro Balance Trainer</name>
<brand>Bosu</brand>
<price>$149.95</price>
<category>Bosu Ball</category>
</info>
<info>
<image>
  <src>images/bowflexdumbbell.jpg</src>
</image>
<name>552 Adjustable Dumbbells</name>
<brand>Bowflex</brand>
<price>$349.00</price>
<category>Weights</category>
</info>
<info>
<image>
  <src>images/bowflexbench.jpg</src>
</image>
<name>5.1 Series Bench</name>
<brand>Bowflex</brand>
<price>$259.00</price>
<category>Equipment</category>
</info>
</products>
4

2 に答える 2

0

チェック条件を追加します。

success: function (xml) {
      var arr = new Array();
      $(xml).find("info").each(function () {
           var option = $(this).find('category').text();
           if($.inArray(option, arr) > -1) {
               // Do nothing 
           }
           else {
               $('#dropdown').append('<option>' + option + '</option>');
                // Push into array
               arr.push(option);
           }
     });
}
于 2013-03-26T20:33:22.677 に答える
0
$(document).ready(function(){
   $("select").each(function () {
       var selectedItem = $(this).find('option').filter(':selected').text();
       var selectedItemValue = $(this).find('option').filter(':selected').val();
       $(this).children("option").each(function(x){
           if(this.text == selectedItem && $(this).val() != selectedItemValue) {
               $(this).remove();
            }
        });
    }); 
});

これを打ち負かす!!!

于 2014-02-19T12:14:22.820 に答える