0

我有一些数据动态绑定到下拉列表,如下所示:

if (product.oPTIONS.length > 0) {
   $.each(product.oPTIONS, function (idx, options) {
         /*appending the each option to a label*/
         $("#productdetails").append('<div class="clear">');
         $("#productdetails").append('<label>' + options.OptionName + '</label>');
         if (options.values.length > 0) {
            var stringBuilder = [];
            /*Creating a select tag for the Retrieved options*/
            $("#productdetails").append('<select id="' + options.OptionName + '" onchange="getimage($(this).val())" ><option>Choose</option>');
            $.each(options.values, function (idx, values) {
            /*Binding options to the Created select tag For an Option based on option Id*/           
            $("" + "#" + options.OptionName + "").append('<option value="' + values.sku + '">' + values.OptionValue + '</option>');
        });
        stringBuilder.push('</select>');
        $("#productdetails").append(stringBuilder.join(''));
     }
     $("#productdetails").append('</div>');
   })
 }

现在我的情况是,下拉列表的某些值可能会重复,在这种情况下,只有一个值应该绑定到下拉列表。

 example
   Size:DropDown
     [S]
     [XXl]
     [s]
     [xl]
   Fit:DropDown
     [Slim]
     [Regular]
     [Slim]
     [AppleCut]

就是这样,这里我只想绑定 [S],[Slim] 大小,只适合下拉菜单一次。

4

1 回答 1

0

将选项添加到数组中,因为它们被考虑包含在选择中,在包含之前检查它们是否存在于该数组中:

var optionsarray = new Array();
$.each(options.values, function (idx, values) {
    if (jQuery.inArray(values.OptionValue.toUpperCase(), optionsarray) < 0) {                            
        $("" + "#" + options.OptionName + "").append('<option value="' + values.sku + '">' + values.OptionValue + '</option>');           
    }
    optionsarray.push(values.OptionValue.toUpperCase());
});


见:http ://api.jquery.com/jQuery.inArray/

于 2012-10-16T14:18:38.663 回答