2009-10-28 4 views
1

내부에 .hover() 기능을 사용하는 데 문제가 있습니다. 어떤 도움을 주셔서 감사합니다. 이 차이를 만드는 경우호버 내에서 .index()를 사용합니다.

$("#myUL li").hover( 
     function() { 

      //this logs a li element as it should 
      $(this).log(); 

      //this reports that it's not a valid function, why? 
      $("#myUL").index(this).log(); 

      //when i do it this way... 
      var foo = $("#myUL").index(this); 
      //this returns -1. Why can't it find the li? 
      $(foo).log(); 

     }, 
     function() { 
     } 
    ); 

이 내가 .log() 기능을 위해 사용하고 코드입니다 :

jQuery.fn.log = function (msg) { 
    console.log("%s: %o", msg, this); 
return this; 
}; 

: 편집 :

<ul id="myUL"> 
     <li> 
     <div><img src="images/img1.jpg"/></div> 
     </li> 
     <li> 
     <div><img src="images/img2.jpg"/></div> 
     </li> 
     <li> 
     <div><img src="images/img3.jpg"/></div> 
     </li> 
    </ul> 
: 코멘트 당, 여기에 HTML입니다
+0

당신은 당신의 HTML PLZ를 추가 할 수 있습니까? – jantimon

+0

Ghommey - 응답 해 주셔서 감사합니다. 나는 html을 추가했다. 위의 편집은 "이다 : 편집 : 코멘트 당, 여기 html이있다 :" – thinksketchdesign

답변

1

일반적으로 jQuery의 API는 사물을 연결하는 것입니다. 즉, 일반적인 경우 jQuery 함수 또는 플러그인의 끝에서 자체를 반환합니다. (return this; 경유). 이것은 jQuery가 연결을 사용할 수 있도록하는 것입니다. 이전 함수가 원래 개체를 반환하기 때문에 체인에서 실행하는 다음 함수는 원래 개체에서 실행되는 입니다.

$.index() 함수의 경우 값을 반환합니다. 이 값은 인덱스를 나타내는 정수입니다. 고유 정수에는 log() 함수가 없습니다. 연결 가능성은 선행 함수가 다음 함수를 호출 할 수있는 값 유형을 리턴 할 때 발생합니다. (예를 들어, "string".substring(1).indexOf('i')) 코드에서

당신은 할 수 있습니다

var $myUL = $("#myUL"), 
    foo = $myUL.index(this); 

$myUL.get(foo).log();