jquery: .filter().css( "visibility" , "collapse" ) 在IE中不起作用,在FF中工作很好



我有一个表格,其中有两个下拉列表。从第一个下拉列表中选择值时,将显示第二个下拉列表中的值。

为此,我编写了以下函数,该函数在第一个下拉列表的onchange事件中调用:

function dataTypeChanged(selectedValue){
document.getElementById("nodeInputValidation").innerHTML = "";
var rows = $('table.intValidationTable tr');
rows.filter('.rangeTR').css("visibility", "collapse");
rows.filter('.listTR').css("visibility", "collapse");
rows.filter('.textListTR').css("visibility", "collapse");
rows.filter('.dateRangeTR').css("visibility", "collapse");
rows.filter('.dateListTR').css("visibility", "collapse");
var validationTypes = document.getElementById("validationType").options;
document.getElementById("validationType").value = "";
var datatype;
for(var i=0;i<validationTypes.length;i++)
{
    datatype = validationTypes[i].value.substring(0,validationTypes[i].value.indexOf("_"));
    if(datatype != selectedValue){
        $("#validationType option[value=" + validationTypes[i].value + "]").hide();
    }else{
        $("#validationType option[value=" + validationTypes[i].value + "]").show();
    }
}
}

这个功能在火狐中运行良好。但不知何故,它在IE 8.0中不起作用。

编辑:早些时候我认为这可能是它的原因。但事实并非如此。

var rows = $('table.intValidationTable tr');
rows.filter('.rangeTR').css("visibility", "collapse");
rows.filter('.listTR').css("visibility", "collapse");
rows.filter('.textListTR').css("visibility", "collapse");
rows.filter('.dateRangeTR').css("visibility", "collapse");
rows.filter('.dateListTR').css("visibility", "collapse");

似乎是函数的另一部分。显示/隐藏第二个下拉列表选项的代码不起作用。当前显示所有选项。

你们能帮我这个吗?

如果需要更多代码,请告诉我。

没有版本的 Internet Explorer(包括 IE8)支持该属性 值"继承"或"折叠"。

请改用display:none;

例如:

rows.filter('.rangeTR').css("display", "none");

visibility: collapse 未在 IE<8 中实现

使用 display: none 隐藏表元素。

看这里 : 可见性的替代方案:折叠在IE和Chrome上不起作用

在这里 : http://reference.sitepoint.com/css/visibility

还要检查下面的代码:

if(datatype != selectedValue){
    $("#validationType option[value=" + validationTypes[i].value + "]").hide();
}else{
    $("#validationType option[value=" + validationTypes[i].value + "]").show();
}

也许尝试添加引号(疯狂猜测,没有真正的希望):

$("#validationType option[value='" + validationTypes[i].value + "']")

你使用的是哪个版本的jQuery?

为我们整理一个jsFiddle会很酷。

好吧visibility: collapse似乎也可以在IE中使用。我正在使用它,它在IE和Firefox中都可以工作。除了这两个之外,不知道其他浏览器。

我做了以下工作:

.HTML:

<table class="intValidationTable">

`<tr class="rangeTR" style="visibility: collapse;">`
`<tr class="listTR" style="visibility: collapse;">`

Javascript + Jquery:

var rows = $('table.intValidationTable tr');

var rangeTR = rows.filter('.rangeTR');

var listTR = rows.filter('.listTR');

rangeTR.css("visibility", "visible");

listTR.css("visibility", "collapse");

这应该有效!

关于我的问题,我想代码的第二部分是错误的。需要检查一下。

最新更新