禁用JQuery后无法重新启用选择标记

时间:2018-08-04 19:53:37

标签: jquery

我正在使用xy = stations_geo.loc[i,'geometry'].coords[0] 启用或禁用选择标签。我可以禁用标签。但是我似乎无法重新启用它。

change()
$(function() {
  $('.menu-select').change(function() {
    if ($(this).val() == '2') {
      $('select').not(this).prop('disabled', true);
    } else {
      $('select').not(this).removeProp('disabled');

      $('select option').removeProp('disabled');

    }
  });
});

1 个答案:

答案 0 :(得分:1)

请参见.removeProp()上的docs

  

.removeProp()方法删除由.prop()方法设置的属性。

     

注意:请勿使用此方法删除本机属性,例如已选中,已禁用或已选中。这将完全删除该属性,并且一旦删除,就不能再次将其添加到element中。使用.prop()将这些属性设置为false。

从DOM元素中删除属性不会将其状态重置为以前的状态-许多DOM属性方法都是 getter / setter 方法,因此,如果仅删除该属性,则不会发生任何事情。您可以在香草JS中更清楚地看到这一点:

const select = document.querySelector('select');
select.disabled = true;
delete select.disabled;
<select name="rating" class="form-control custom-select menu-select" style="width: 100%; height:36px;">

  <option value="">Select a Rating for the Movie/Series...</option>
  <option value="1" data-id="G">G</option>
  <option value="2" data-id="PG3">PG3</option>
  <option value="3" data-id="PG-13">PG-13</option>
  <option value="4" data-id="R">R</option>
  <option value="5" data-id="NC-17">NC-17</option>
  <option value="6" data-id="TV-14">TV-14</option>

</select>

因此,else块应该是:

$('select').not(this).prop('disabled', false);

$('.menu-select').change(function() {
  if ($(this).val() == '2') {
    $('select').not(this).prop('disabled', true);
  } else {
    $('select').not(this).prop('disabled', false);
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select name="rating" class="form-control custom-select menu-select" style="width: 100%; height:36px;">

  <option value="">Select a Rating for the Movie/Series...</option>
  <option value="1" data-id="G">G</option>
  <option value="2" data-id="PG3">PG3</option>
  <option value="3" data-id="PG-13">PG-13</option>
  <option value="4" data-id="R">R</option>
  <option value="5" data-id="NC-17">NC-17</option>
  <option value="6" data-id="TV-14">TV-14</option>

</select>

<br><br>

<select name="rating" class="form-control custom-select" style="width: 100%; height:36px;">

  <option value="">Select a Rating for the Movie/Series...</option>
  <option value="1" data-id="G">G</option>
  <option value="2" data-id="PG3">PG3</option>

</select>