【问题标题】:jQuery remove options from select without value attributejQuery从没有值属性的选择中删除选项
【发布时间】:2015-08-12 20:25:06
【问题描述】:

我想忽略/删除选择框中具有空白值或根本没有 value="" 属性的所有选项,例如

<option>Any Option</option>
<option value="">Any Option</option>

这是我的 jQuery:

$(function() {

  // Create the dropdown base
  $("<select />").appendTo("#pagination_container");

  // Create default option "Go to..."
  $("<option />", {
    "selected": "selected",
    "value"   : "",
    "text"    : "Select Page..."
  }).appendTo("#pagination_container select");

  // Populate dropdown with menu items
  $("#pagination_container a").each(function() {
    var el = $(this);
    $("<option />", {
      "value"   : el.attr("href"),
      "text"    : el.text()
    }).appendTo("#pagination_container select");
  });

  $("#pagination_container select").change(function() {
    window.location = $(this).find("option:selected").val();
  });

});

【问题讨论】:

  • 请发布您的标记。

标签: javascript jquery


【解决方案1】:

您需要使用两部分选择器来实现:

$('option[value=""],option:not([value])').remove();

注意:请记住,value="" 检查元素的初始状态。因此,如果您稍后更改元素的值,而不一定更改 value 属性,那么您可能会得到意想不到的结果。如果option元素的值一定会改变,请使用filter()而不是[value=""]

【讨论】:

    【解决方案2】:

    这样定位元素

    $('option[value=""]');
    

    并删除这样做

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

    【讨论】:

      【解决方案3】:
      $("#pagination_container").find("option").each(function(index, el){
        var $el = $(el);
        var value = $el.attr("value");
        if (value === "" || value === undefined)
          $el.remove();
      });
      

      从 jQuery 1.6 开始,.attr() 方法返回未定义的属性 尚未设置。 source

      【讨论】:

      • 感谢您的建议,这个解决方案解决了我的另一个问题
      【解决方案4】:

      本题与本题类似:

      检查链接并了解很多不同的方法来解决您的问题。

      【讨论】:

        猜你喜欢
        • 2021-07-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-28
        • 2012-05-14
        • 2013-11-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多