2015-10-29 2 views
1

У меня есть один контейнер с 3 подпунктов и Jquery:Изменение фона главного DIV при наведении курсора на Subdiv

$(function() { 
 
    $('.sub1').hover(function() { 
 
    $('#container').css('background-image', 'url("../img/plan.jpg")'); 
 
    }, function() { 
 
    // on mouseout, reset the background colour 
 
    $('#container').css('background-color', ''); 
 
    }); 
 
});
<div id="container"> 
 
    <div class="sub1">This is link 1</div> 
 
    <div class="sub2">This is link 2</div> 
 
    <div class="sub3">This is link 3</div> 
 
</div>

Цель состоит в том, чтобы изменить фон «контейнер» при наведении курсора «sub1», «sub2» или «sub3». Каждый sub имеет собственный фоновый образ в css. Когда мышь больше не будет витать «sub1», «sub2» или «sub3», фон вернется к белому.

Не возражайте, что theres no sub2 или sub3 пока не функционирует, я сосредотачиваюсь на них позже.

У меня есть работа над частью мыши. Фон контейнера не вернется в исходное состояние (белый).

Есть ли какой-нибудь гуру, который может мне помочь?

Заранее благодарен,

Roelof!

+0

Вы не должны сбросить 'фоновую-image' свойство вместо «цвет фона»? –

+0

посмотрите на этот образец http://jsbin.com/umalu4/edit?html,js,output – GANI

+0

Какой эффект вы пытаетесь достичь здесь, каково это должно быть? И что это представляет собой меню навигации? Интересно, не удалось ли это решить с помощью только CSS. – CBroe

ответ

2

Вы устанавливаете фоновый цвет вместо фонового изображения. Я взял на себя смелость заставить его работать и на всех сумах. :)

$(function() { 
 
    $('#container').on('mouseover', '[class^="sub"]', function() { 
 
    var container = $('#container'); 
 
    switch ($(this).attr('class')) { 
 
     case 'sub1': 
 
     container.css('background-image', 'url("http://placehold.it/500x50")'); 
 
     break; 
 
     case 'sub2': 
 
     container.css('background-image', 'url("http://placehold.it/500x60")'); 
 
     break; 
 
     case 'sub3': 
 
     container.css('background-image', 'url("http://placehold.it/500x70")'); 
 
     break; 
 
     default: 
 
    } 
 
    }); 
 
    
 
    $('#container').on('mouseout', '[class^="sub"]', function() { 
 
    $('#container').css('background-image', ''); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.1/jquery.min.js"></script> 
 
<div id="container"> 
 
    <div class="sub1">This is link 1</div> 
 
    <div class="sub2">This is link 2</div> 
 
    <div class="sub3">This is link 3</div> 
 
</div>

+1

Должен сказать спасибо, а потому, что эта штука, которую вы сняли с подлодок, мне любопытно. Я обязательно посмотрю на это, как только у меня все получится. : D –

+1

Добро пожаловать и удачи. Краткое описание: '[class^=" sub "]' задает все классы, которые начинаются с "sub", но в этой настройке только внутри '# container'. '$ (this) .attr ('class')' получает полное имя класса для оператора switch. Остальное, я думаю, вы понимаете. :) – turbopipp

+1

После вашего редактирования я использую этот код вместо этого. Это действительно то, что я считаю. Посмотрите на http://www.roelofplas.nl/#about, чтобы увидеть, как он работает.Я использовал diffident id в своем вопросе, чтобы сделать его проще. Но он работает так, как будто я хотел его сейчас. Любая идея, как я могу сделать «ящик» больше, когда мышь выведет мышью/мышь? –

2

Он должен выглядеть, когда парят над каждым .sub вы получите красный цвет другой мудрый вы получите зеленый И тогда вы можете просто поместить изображение в его

EDITED : Добавить изображение для вас на hover вы получите изображение на мышь, вы получите изображение удалить и установить цвет

$(function() { 
 
     $('#container > div').hover(function() { 
 
     $('#container').css('background-image',     'url(http://www.placecage.com/200/300)'); 
 
     console.log("mouse over"); 
 
     }, function() { 
 
     // on mouseover, reset the background colour 
 
     $('#container').css({ 
 
      'background-color': 'green', 
 
      'background-image': 'none' 
 
     }); 
 
     console.log("mouse out"); 
 
     }); 
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
    <div id="container"> 
 
     <div class="sub1">This is link 1</div> 
 
     <div class="sub2">This is link 2</div> 
 
     <div class="sub3">This is link 3</div> 
 
    </div>

+0

Вы правы, у меня был фоновый цвет вместо фонового изображения. Мне нравится быть noob в кодировании ха-ха. -.- –

+1

без проблем bro :) Мы все учимся каждый день, имеем красивое кодирование в будущем :) –

3

Я думаю, что единственная ошибка в коде является то, что вы сбросить background-color вместо background-image собственности

$(function() { 
$('.sub1').hover(function() { 
    $('#container').css('background-image', 'url("../img/plan.jpg")'); 
}, function() { 
    // on mouseout, reset the background colour 
    $('#container').css('background-image', ''); // definately here is the error 
}); 
}); 
+0

Спасибо, я использовал этот ответ и продал его как awnser. Большое спасибо. Я так глуп, иногда лол. :) –

+0

Может случиться со всеми :-). Вы не отметили это как правильный ответ, хотя ... –

Смежные вопросы