2009-10-28 38 views
1

我在.hover()函数中使用.index()时遇到了一些问题。谢谢你的帮助。在悬停中使用.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; 
}; 

:编辑:每评论,下面是HTML:

<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> 
+0

您可以添加HTML PLZ? – jantimon 2009-10-28 17:05:31

+0

肯定Ghommey - 谢谢你的回应。我已经添加了html - 查看我的编辑 “:编辑:根据评论,这里是html:” – thinksketchdesign 2009-11-11 19:09:55

回答

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();