2014-12-18 5 views
0
<div class="col-xs-12 col-sm-4"> 
     <div class="thumbnail-container"> 
      <img class="img-responsive" src="http://placehold.it/1024x768" alt="..."> 
      <div class="thumbnail-overlay"></div> 
      <p class="text-center text-nowrap" style="display:block">title</p> 
     </div> 
    </div> 

function overlay() { 
    $('.thumbnail-container > .text-center').mouseenter(function() { 
     $('.thumbnail-container > .thumbnail-overlay').fadeOut(500) 
    }) 
    $('.thumbnail-container > .text-center').mouseleave(function() { 
     $('.thumbnail-container > .thumbnail-overlay').fadeIn(500) 
    }) 
} 

저는이 중 6 개가 "thumbnail-container"인데, 그 중 하나가 호버링 (분명히) 될 때만 jquery 코드를 실행하고 싶습니다. 지금 내가 "p.text-center"을 가리킬 때 코드는 모든 6 컨테이너의 모든 div를 페이드 아웃합니다. 나는 "this" 키워드를 퍼팅 해봤지만 여전히 작동하지 않습니다."this"키워드를 사용하여 요소를 타겟팅하는 방법은 무엇입니까?

+0

올바른 'this'를 사용하고 있습니까? http://stackoverflow.com/questions/1051782/jquery-this-vs-this – kingdamian42

+0

'mouseenter' 콜백 내에서'this'는 호버링 된'.text-center' 요소를 나타냅니다. 해당 컨텍스트에서 부모'.thumbnail-container'를 선택해야합니다. – zzzzBov

답변

0

이벤트 핸들러는 .text-center에,하지만 당신은 페이드 아웃 할 요소는 .thumbnail-overlay과의 형제, 그래서 당신이 할 수 있습니다 :

$(this).siblings('.thumbnail-overlay').fadeOut(500) 
+0

예. 그게 다야. 감사. 또한 jbarnett 솔루션이 작동하지만 입력 횟수가 적습니다. – kernel32bts

2
function overlay() { 
    $('.thumbnail-container > .text-center').mouseenter(function() { 
     $(this).parent().find('.thumbnail-overlay').fadeOut(500) 
    }); 
    $('.thumbnail-container > .text-center').mouseleave(function() { 
     $(this).parent().find('.thumbnail-overlay').fadeIn(500) 
    }); 
} 
0
<p class="text-center text-nowrap" style="display:block" mouseenter="fade_out(this)" mouseleave="fade_in(this)">title</p> 

function fade_in(element){ 
    $(element).fadeIn(500); 
} 

function fade_out(element){ 
    $(element).fadeOut(500); 
} 
관련 문제