每次选择选择字段时,都会激活更改事件,但不会删除旧值

问题描述 投票:0回答:1

每次进入选择字段时,都会激活开启更改事件,但不会删除旧值。我想要的是从选项中删除旧的attr,点击的新attr应该得到attr。

见图:

我想要一个选择而不是多个。

我的代码:

jQuery(document).ready(function($) {

    var data, 
    postData, 
    brandsArr = [], 
    uniqBrandsArr = [], 
    typeArr = [], 
    fuelArr = [];

    var brand = $('#brand'),
    brandOption = brand.find('#option-brand');


    data = {
        'action': 'ajax'
    };  

    jQuery.get(ajaxurl, data, function(response) {
        postData = jQuery.parseJSON(response);

        jQuery.each(postData, function(index, value) {
            if(value.meta_key === 'brand') {
                brandsArr.push(value.meta_value);
            } else if(value.meta_key === 'type') { 
                typeArr.push(value.meta_value);
            } else if(value.meta_key === 'fuel') {
                fuelArr.push(value.meta_value);
            }
        });

        var uniqBrandsArr = brandsArr.filter(function(value, index){
            return brandsArr.indexOf(value) == index;
        });

        jQuery.each(uniqBrandsArr, function(index, value){
            brand.append($('<option>',
            {
                id: 'option-brand',
                value: value,
                text: value
            }));    
        });

        brand.on('change', function(){
            brandSelectedOption = $(this).children("option:selected").attr('selected', true);

        }); 


    });

});

当我再次单击选择字段并选择新选项时,我想要的是必须删除旧属性选择选项。

jquery select
1个回答
0
投票

当我再次单击选择字段并选择新选项时,必须删除旧属性选择选项。

因此,在选择新选项之前,您必须取消选择所有选项...

brand.on('change', function(){

  // Add this line:
  $(this).children("option").attr('selected', false);

  brandSelectedOption = $(this).children("option:selected").attr('selected', true);

});

这是一个简单的演示......检查标记以查看属性。

$("select").on("change", function() {

  // Removes all selected attributes
  $(this).children("option").attr('selected', false);

  // Adds the attribute on the currently selected
  $(this).children("option:selected").attr('selected', true);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<select>
  <option>Zero</option>
  <option>One</option>
  <option>Two</option>
  <option>Three</option>
  <option>Four</option>
</select>


EDIT

由于选项是动态添加的,请尝试:

$(document).on('change', '#brand', function(){

而不是brand.on('change', function(){

© www.soinside.com 2019 - 2024. All rights reserved.