0

我有一个快速功能:

//loop through all the options and hide "dts"
$('#userSpec > option').each(function() {
  console.log(this);
  if(this.value.indexOf("d")==0) {
    $(this).css("display", "none");
  }
});

它在适用于 Ubuntu、Firefox 的 Chrome 的最新版本中运行良好,但在 Opera 中运行良好。在 Mac 上,Firefox 是唯一有效的。我还尝试使用“display”、“none”、“!important”,将 .css 更改为 .style 或 .attr - 结果相同。我添加了一个带有这些 css 参数的类并使用了 .addClass,没有变化。任何想法为什么会发生这种情况以及我该如何解决?

非常感谢。

4

1 回答 1

1

唯一真正的跨浏览器方法是使用 jQuery 的.remove()函数。您可以轻松地将删除的option元素存储在数组中以供以后恢复。例如,以下代码应该实现类似于您所追求的东西:

var to_restore = [ ],
    selectBox = $('#userSpec');

//loop through all the options and hide "dts"
selectBox.children('option').each(function() {
    if(this.value.indexOf("d")==0) 
    {
        to_restore.push({ 'index': $(this).index() - 1, 'ele': $(this) });
        $(this).remove();
    }
});

我已经为你整理了jsFiddle Demodisplay: none这个解决方案并不理想,但由于某些浏览器不支持option元素,我认为这是解决您的问题的唯一真正解决方案。

于 2013-07-18T22:40:18.910 回答