关于JQuery的简单问题:为什么$(this).find("span:first-child")这句话结果不正确?

关于JQuery的简单问题:为什么$(this).find("span:first-child")这句话结构不正确?

 

$("th[role='columnheader']").mouseenter(  function(){
    var index = $(this).index();
    alert( $(this).find("span:first-child").length );
});

 

 

我本意是想取得鼠标穿过的列里的第一个span。为什么这里Alert出来的值是3而不是1?

4个回答

$("th[role='columnheader']") 有多个吧
这样你 看下 $("th[role='columnheader']").length有多少个?

iteye_5246
iteye_5246 结贴。。。
7 年多之前 回复
zengjd
zengjd 谢谢你啊!
7 年多之前 回复
iteye_5246
iteye_5246 find是会找到所有的 简单换个吧。 $(this).find("span:eq(0)")
7 年多之前 回复
zengjd
zengjd 难道$(this).find( :first-child)不是查找当前元素内的子元素么?
7 年多之前 回复
iteye_5246
iteye_5246 例如: <ul> <li>Test1<li> <li>Test2<li> </ul> <ul> <li>Test3<li> <li>Test4<li> </ul> 而':first-child'选择符将为每个父元素匹配一个子元素 如果用 $("ul li:first-child") 这样有2个
7 年多之前 回复
zengjd
zengjd 跟多少个th有关系么?$(this).find("span:first-child")这句话思想取得当前列的第一个span。 主要是this和first-child不符合我的预期
7 年多之前 回复

能先把代码贴出来看看不!

alert( $(this).find("span:first-child").length );  

:first 是查出来的span集合中的第一个
:first-child 是查出来的span集合中的每一个第一个 你去看下api就明白了

jinnianshilongnian
jinnianshilongnian 改成first 即可 first-child 搞不定 api的目的不同
7 年多之前 回复
zengjd
zengjd 那我就想用first-child查找出this下面的第一个span元素,怎么查?能实现么?
7 年多之前 回复

1楼正解

':first' 只匹配一个元素,
':first-child'而将为每个父元素匹配一个子元素

例如:[code="java"]


  • John

  • Karl

  • Brandon



  • Glen

  • Tane

  • Ralph

[/code]
jQuery 代码:
[code="java"]$("ul li:first-child")[/code]
结果:[code="java"][ John, Glen ][/code]
立即提问