2013-06-06 3 views
0

jquery-1.2.7.tools.min.js에서 오버레이 도구를 사용합니다. 나는 여러 개의 div가 'img'와 일부 'a'태그에 오버레이로 설정되어 있습니다. jquery 오버레이에서 "this"를 찾을 수 없습니다.

<img src="/image/test.png" rel="#1485"> 
<div id="1485" class="simple_overlay"> 
    <a rel="1486">1</a> 
    <a rel="1487">2</a> 
    <a rel="1488">3</a> 
<div id="1486" class="simple_overlay"> 
    <a rel="1486">1</a> 
    <a rel="1487">2</a> 
    <a rel="1488">3</a> 
<div id="1487" class="simple_overlay"> 
    <a rel="1486">1</a> 
    <a rel="1487">2</a> 
    <a rel="1488">3</a> 

나는 'A'링크 중 하나를 클릭

, 나는 그것의 ID를 일치 오버레이 사업부를 표시하고, 나머지는 숨겨 싶어요. 그러나,이 같은 jQuery 코드를 사용하여 :

<script> 
    $(document).ready(function() { 
     $('img[rel]').overlay({ 
      oneInstance: false 
     }); 

     $('a[rel]').overlay({ 
      oneInstance: false, 
      onLoad: function (event) { 
       $('.simple_overlay').not($(this)).hide(); 
      } 
     }); 
    }); 
</script> 

또는이를 사용하여 :

$(this).siblings().hide() 

은 "이"지정은 내가 원하는 것을하지 않습니다. 본질적으로 클래스 .simple_overlay가있는 모든 div는 hide() 호출에서 숨겨집니다. 나는 클릭 된 상대방 ID가있는 div를 표시하고 나머지는 숨겨 둡니다.하지만 "이"가 무엇인지를 잘못 추측하고있는 것처럼 보입니다 ...이 상황에서 "이"가 무엇인지 알려 줄 수 있습니까?

+0

'this'는 현재 그 기능을 나타냅니다. 그래서 그것은 아마도 작동하지 않을 것입니다. 내 생각 엔 함수 호출에 전달할 수있는 매개 변수를 사용해야한다는 것입니다. – Richard

답변

0

this은 click, each, bind 등의 메소드에 의해 호출되는 콜백 함수 (jQuery의 컨텍스트에서) 내부에있을 때 DOM 요소입니다.

그래서 .overlay()는 "this"가 무엇인지 알기 위해 콜백 함수를 지정해야합니다.

디버깅이 시도 :

console.log($(this)); 
$('.simple_overlay').not($(this)).hide(); 

을 콘솔이 $ (이) 정의되지는 익명 함수

보다는 이벤트 바인딩을 사용하도록 코드를 수정에 대해 생각 할 수 있음을 보여줍니다 경우 원하는 선택기를 항상 클릭 이벤트에 바인딩하고 그런 식으로 숨길 수 있습니다.

$('.simple_overlay').on('click', function() { 
      $(this).hide(); 
     } 
    }); 
관련 문제