我在.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>
答案 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();