IE 8 - 禁用选择列表框

时间:2011-09-01 14:30:12

标签: javascript jquery listbox

我有一个页面,其中包含< select />大小为“4”的元素。其中一些是残疾人。 IE 8的智慧决定不显示这些列表框的选定项目(该页面在其他浏览器中很好)。我尝试使用jQuery为它们着色。它似乎在本地工作。但是当我将它发布到我的开发服务器时,它就会停止工作。这是我使用的jquery:

$(document).ready(function () {
        $('select').each(function () {
            if ($(this).attr('size') != undefined && $(this).attr('size') > 1 && $(this).attr('disabled') == 'disabled') {
                $(this).find('option[selected=selected]').each(function () {
                    $(this).css('background-color', '#15317E');
                });
            }
        });
    });

我也尝试了以下几页中的建议,但这似乎也没有用。

参考文献:

如果你能给我任何建议,那就太好了!

谢谢!

2 个答案:

答案 0 :(得分:1)

啊,最后我发现了这个问题。由于某种原因,服务器实例无法识别此jQuery:

$(this).find('option[selected=selected]').each(function () {
...
}

我不知道为什么,因为开发机器和服务器有相同版本的jQuery,所以必须检查出来。

所以,当我将其更改为以下内容时,本地和开发服务器都开始突出显示所选项目的颜色!

$(document).ready(function () {
        $('select').each(function () {
            if ($(this).attr('size') != undefined && $(this).attr('size') > 1 && $(this).attr('disabled') == 'disabled') {
                $(this).find('option').each(function () {
                    if ($(this).attr('selected') == 'selected') {
                        $(this).css('background-color', '#15317E');
                    }
                });
            }
        });
    });

谢谢!

答案 1 :(得分:0)

条件的Jquery - $(this).attr('disabled')将返回布尔值。

因此上述条件语句中的条件实现为:

$(document).ready(function () { 
    $('select').each(function () { 
        if ($(this).attr('size') != undefined && $(this).attr('size') > 1 && $(this).attr('disabled') ) { 
            $(this).css('background-color', '#15317E');
        } 
    }); 
});

所选项目相同。

如果在UI上看不到所选项目,则选择框的IE 8禁用属性将不显示所选项目。 IE 8也会阻止滚动条。假设所选项目位于大小为4的选择框中的第10个位置。因此,屏幕上将不会显示第10个项目。对于这种情况,建议将禁用的选择框的大小从4更改为0.这将确保在禁用的选择框中仅显示所选项目。以下是代码:

$(document).ready(function() { 
    $('select').each(function() { 
        if ($(this).attr('size') != undefined && $(this).attr('size') > 1 && $(this).attr('disabled')) { 
            $(this).attr('size', 0); 
        }
    });
});