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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每次选择选择字段时,都会激活更改事件,但不会删除旧值相关的知识,希望对你有一定的参考价值。

每次进入选择字段时,都会激活开启更改事件,但不会删除旧值。我想要的是从选项中删除旧的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);

        }); 


    });

});

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

答案

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

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

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>

以上是关于每次选择选择字段时,都会激活更改事件,但不会删除旧值的主要内容,如果未能解决你的问题,请参考以下文章

使用旧状态的 PayPal 智能支付按钮

选择的插件更改事件未触发

删除多个单元格时不会发生 Excel 工作表更改事件

如何在选择框更改JavaScript值时添加和删除消息?

从无线电输入标签中添加和删除类

更改选择选项的值