Ранее я сталкивался с подобной проблемой, и она вызвана тем, что мышь вызвала новое событие mouseenter / mouseleave, прежде чем jQuery смог обработать предыдущую команду show()
. Самый простой способ решить эту проблему - добавить общую команду, которая заставит все ваших цветных изображений в show()
перед тем, как запустить фильтр для show
/ hide
цветного и черно-белого изображения работа с.
Итак, в основном измените ваш код на:
function desevent(event) {
var classString = new String($(this).attr('class')),
pair = classString.match(/pair_\d+/);
$(".color").show();
$(":not(.color)").hide();
if (event.type == 'mouseenter')
$("." + pair).filter(".color").hide();
$("." + pair).filter(":not(.color)").show();
}
Когда события mouseenter или mouseleave срабатывают, сценарий сначала показывает все цветные изображения и скрывает все черно-белые изображения. Затем, если это был указатель мыши, сценарий скроет цветное изображение и покажет черно-белое изображение.