jQuery如果CSS显示无变化选择列表值

时间:2015-09-08 08:24:58

标签: jquery

我有一些条件字段,所以当用户更改字段时会显示一个新字段,我想要做的是删除以前选中的字段的值,该字段现在显示为无。

所以我试过了:

$(document).ready(function($){
  if($('.field-type-list-integer').css('display') == 'none') {
    $(this).closest("select option[disabled]").attr("selected", "selected");
  }
});

问题在于它清除了每个字段的值并忽略了.css('display') == 'none'条件。

这是HTML结构:

    <div class="field-type-list-integer" id="edit-field-year-build-miladi" style="display: block;" checked="checked">
<div class="form-type-select">
    <select id="edit-field-year-build-miladi-und" name="field_year_build_miladi[und]" class="form-select valid" placeholder="year">
    <option value="_none" disabled="disabled" selected="selected">YEAR</option>
    <option value="2015">2015</option>
    <option value="2014">2014</option>
    </div>
    </div>

1 个答案:

答案 0 :(得分:2)

问题在于这不是您期望的元素。在您的代码中,它只是document

如果您拥有更多.field-type-list-integer,则可以使用each将其循环播放。然后你可以简单地使用它来完成你想要做的事情。

$(document).ready(function($){
    $('.field-type-list-integer').each(function(){
        if ($(this).css('display') === 'none') {
            $(this).find("select option").removeAttr("selected");    
            $(this).find("select option[disabled]").attr("selected", "selected");        
        }
    });
});

另请注意,您必须手动删除所选选项以避免多个选定选项。

请参阅此小提琴,了解操作中的代码:http://jsfiddle.net/h6cbwvc9/