在悬停()中使用.index()

时间:2009-10-28 16:53:51

标签: jquery indexing hover

我在.index()函数中使用.hover()时遇到了一些麻烦。谢谢你的帮助。

    $("#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>

1 个答案:

答案 0 :(得分: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();