每次进入选择字段时,都会激活开启更改事件,但不会删除旧值。我想要的是从选项中删除旧的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>
由于选项是动态添加的,请尝试:
$(document).on('change', '#brand', function(){
而不是brand.on('change', function(){