Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript IE 8-禁用的选择列表框_Javascript_Jquery_Listbox - Fatal编程技术网

Javascript IE 8-禁用的选择列表框

Javascript IE 8-禁用的选择列表框,javascript,jquery,listbox,Javascript,Jquery,Listbox,我有一个页面,其中有许多大小为“4”的元素。其中一些是残疾的。IE8明智地决定不显示这些列表框的选定项(在其他浏览器中,该页面也可以)。我尝试使用jQuery为它们着色。它似乎在本地起作用。但是当我把它发布到我的开发服务器时,它就停止工作了。这是我使用的jquery: $(document).ready(function () { $('select').each(function () { if ($(this).attr('size') != unde

我有一个页面,其中有许多大小为“4”的元素。其中一些是残疾的。IE8明智地决定不显示这些列表框的选定项(在其他浏览器中,该页面也可以)。我尝试使用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');
                });
            }
        });
    });
我也尝试了下面几页中的建议,但似乎也不起作用

参考资料:

  • (这是一个下拉列表,我仍然尝试了它,它为整个列表框着色,但仍然没有突出显示所选项目-现在我正在尝试更改css以仅为所选选项着色)
如果你能给我任何建议,那就太好了


谢谢

啊,我终于找到了问题所在。由于某些原因,服务器实例无法识别此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');
                    }
                });
            }
        });
    });

谢谢

Jquery for condition-
$(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 Disabled属性将不显示所选项目。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); 
        }
    });
});

嗯,你想给整个下拉元素上色还是只给禁用的项目上色?它是一个列表框,其中一个项目被选中。如果我在SO链接中使用css,它会为整个选择框着色。我只想给禁用列表框中的选定项上色。谢谢我尝试了几件事,我的代码只在InternetExplorer6,7,8中工作(9未测试,因为没有合适的操作系统可用)。FF3.6.20更改了背景,但未更改为定义的颜色。Safari和Chrome向我展示了不同的行为。顺便说一句,当我把我的测试站点上传到本地服务器时,并没有出现任何问题。@reporter-谢谢你们花时间!我发现了这个问题,并将其作为答案发布。。。