jQuery从select中移除选项,但不包含value属性

jQuery remove options from select without value attribute

本文关键字:包含 value 属性 选项 select jQuery      更新时间:2023-09-26

我想忽略/删除选择框中的所有选项,这些选项要么有空值,要么根本没有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();
  });
});

您需要使用一个由两部分组成的选择器来实现这一点:

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

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

瞄准类似的元素

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

和删除做这个

$('option[value=""]').remove();
$("#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((方法为属性返回undefined尚未设置。源

这个问题类似于这个问题:

  • jQuery从select中删除选项
  • 从选择框中删除项目

查看链接,学习许多不同的方法来解决您的问题。