建议了解一下JQ的源码,另外锋利的JQUERY上面写的很好。对于JQ的选择器实现方式:ID选择器使用的是原生的getElementById,是最快的,TagName选择器使用的是getElementsByTagName,ClassName选择器需要遍历所有的DOM元素。最慢的就是属性选择器、伪类选择器。对于楼主所提的两种情况,可以用代码自己试一下。 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <div id="a"></div><p></p> </body> <script> var start1=+new Date(); for(i=0;i<10000;i++){ $("#a+p"); } var start2=+new Date(); console.log(start2-start1); for(i=0;i<10000;i++){ $("#a").next(); } var start3=+new Date(); console.log(start3-start2); </script> </html> 测试结果是使用 $("#a").next() 更快。
肯定是 $("#a").next()更快,因为这里使用的是jQuery提供的方法,可以直接获取,而$('#block + ul')相当于jQuery还需要去解析这段字符串所代表的含义,所以尽量使用jQuery提供的方法。
建议了解一下JQ的源码,另外锋利的JQUERY上面写的很好。
对于JQ的选择器实现方式:ID选择器使用的是原生的getElementById,是最快的,TagName选择器使用的是getElementsByTagName,ClassName选择器需要遍历所有的DOM元素。最慢的就是属性选择器、伪类选择器。
对于楼主所提的两种情况,可以用代码自己试一下。
测试结果是使用 $("#a").next() 更快。