【问题标题】:Delete an option tag with JS用 JS 删除选项标签
【发布时间】:2012-11-15 16:18:48
【问题描述】:

我有这个生成的代码:

<select class="generic-widget" id="auth_user_group_id" name="group_id">
<option value=""></option>
<option value="2">admin</option>
<option value="3">user</option>
<option value="1">guest</option>
</select>

我需要使用 JS 删除访客选项并尝试将用户选项设置为默认...

我尝试使用此 JQuery 代码删除来宾选项,但失败了:

<script>
$('option').each(function(){
    if($(this).attr('value') == '1') {
        $(this).remove();
        }
    });
</script>

【问题讨论】:

    标签: javascript jquery ajax


    【解决方案1】:

    Removing an item from a select box

    删除一个选项:

    $("#auth_user_group_id option[value='1']").remove();
    

    【讨论】:

    • @Christian_Espinoza:你是说如果你只是用上面的代码替换你的问题中的代码,它会突然起作用吗?这没有意义,。
    【解决方案2】:

    怎么样:

    $('#auth_user_group_id > option[value="1"]').remove();
    

    【讨论】:

      【解决方案3】:

      只要在 DOM 准备好后运行代码,就可以正常工作。

         // v----this handler will run after the DOM has loaded
      $(function() {
          $('option').each(function(){
              if($(this).attr('value') == '1') {
                  $(this).remove();
              }
          });
      });
      

      演示: http://jsfiddle.net/TTUkS/

      如果您的代码放在页面顶部,那么它会在元素存在之前运行。

      【讨论】:

      • 这种方式在我看来更具可读性:if($(this).val() == '1') ...
      • @Mic:我同意,但关键是 OP 的代码按其编写方式正常工作。所以代码本身不需要修复,但(可能)它只需要在DOM准备好之后运行。
      【解决方案4】:

      你可以将值条件放在选择器中:

      $('#auth_user_group_id option[value="1"]').remove();
      

      然后你可以使用val方法来选择一个选项:

      $('#auth_user_group_id').val('3');
      

      【讨论】:

        【解决方案5】:

        您可以通过以下方式检查选项项的值:

        $('option').each(function(){
        if($(this).val() == '1') {
            $(this).remove();
            }
        });
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-04-08
          • 1970-01-01
          • 1970-01-01
          • 2017-11-24
          • 2018-04-16
          • 1970-01-01
          • 2018-07-27
          • 2012-07-31
          相关资源
          最近更新 更多