IE не учитывает z-индекс выбранного объекта и применяет атрибут курсора любого базового объекта.
Я справляюсь с этим, изменяя атрибут курсора всех базовых объектов, чтобы он указывал на событие onfocus для выбранного объекта, и восстанавливал их при событии onblur для выбранного объекта.
Разочаровывает то, что IE не обрабатывает это правильно, как и большинство других браузеров.
Пример кода (по запросу DavidG):
В этом примере мы применяем класс «недостаточный выбор» ко всем элементам, которые будут охвачены раскрывающимся списком выбора (примечание: раскрывающийся список не всегда расширяется вниз, он может расширяться вверх).
При загрузке страницы начальное свойство курсора каждого элемента с классом underselect сохраняется в атрибуте ic этого элемента.
Событие focus элемента select связано с функцией, которая устанавливает курсор всех элементов с классом underselect в указатель.
Событие размытия элемента select связано с функцией, которая устанавливает курсор всех элементов с классом underselect в начальное значение, которое было сохранено при загрузке страницы.
Использование jquery
$(function ()
{
$("#select")
.bind("focus", function(){ $(".underselect").each(function(){$(this).css("cursor", "pointer") }); })
.bind("blur", function(){ $(".underselect").each(function (i){$(this).css("cursor", $(this).data("ic")); }) });
$(".underselect").each(function () { $(this).data("ic", $(this).css("cursor")); });
});
Используя только javascript, мы создаем следующие функции:
function saveinitialcursor()
{
gp = document.getElementsByClassName("underselect");
for (var i = 0, l = gp.length; i < l; i++)
{
style = getComputedStyle(gp[i]);
cursor = style.getPropertyValue("cursor");
gp[i].setAttribute("ic", cursor);
}
}
function selectfocus()
{
gp = document.getElementsByClassName("underselect")
for (var i = 0, l = gp.length; i < l; i++)
gp[i].style.cursor = "pointer";
}
function selectblur()
{
gp = document.getElementsByClassName("underselect")
for (var i = 0, l = gp.length; i < l; i++)
gp[i].style.cursor = gp[i].getAttribute("ic");
}
и привяжите их к телу и выберите открывающие теги:
<body onload="saveinitialcursor()" >
<select id="select" onblur="selectblur()" onfocus="selectfocus()" >
person
bazzag
schedule
29.05.2014