为什么是 undefined
html
<!doctype html> <html> <head> <meta charset="utf-8"> <title>无标题文档</title> <script src="jquery-1.11.2.min.js"></script> </head> <body> <p id="p1"> <ul> <li>01</li> <li>02</li> <li>03</li> </ul> </p> <script> $(function() { $("#p1").on("click", function(){ var wz = $(this).children("li").html(); console.log(wz); }); }); </script> </body> </html>
-----------------------------------------------------------------------------------
第一个 wz
是 undefined
为什么
下面这2个 $(this)
为什么不一样dianji()
$(this)
指什么
html
<!doctype html> <html> <head> <meta charset="utf-8"> <title>无标题文档</title> <script src="jquery-1.11.2.min.js"></script> </head> <body> <p id="p1" onClick="dianji()"> <ul> <li>01</li> <li>02</li> <li>03</li> </ul> </p> <script> function dianji() { var wz = $(this).children().children("li").eq(0).html(); console.log(wz); } $(function() { $("#p1").on("click", function(){ var wz = $(this).children().children("li").eq(0).html(); console.log(wz); }); }); </script> </body> </html>
PHP中文网2017-04-10 15:11:34
我又来挑刺了,楼主对jquery函数认识不清楚,你得搞清楚什么是子节点,什么是后代节点,并且搞清楚children函数获取的是什么。
首先$(this).child()是获取的p的子元素,即ul节点,并且只有这一个字节点,而楼主要获取的是li,即为后代节点,当然获取不到了。
如果要获取到的话可以这样做:$(this).find("li")
PHPz2017-04-10 15:11:34
$("#p1").on("click", function(){
var wz = $(this).children("li").html();//查询的是直接子节点,也就是ul ,用$(this).find("li").html(); 试下
console.log(wz);
});
黄舟2017-04-10 15:11:34
查下api就知道了
children()只考虑子元素而不考虑所有后代元素
$(this).children("li")的size为0,不是任何节点
天蓬老师2017-04-10 15:11:34
两点需要注意:
1. children
方法相当于css的 >
选择器,只选择子辈的,不管孙子辈的。
2. 你这里用html
方法,只会返回选择的子集的第一个元素的内容。