http://tianyazjq110.iteye.com/blog/578759问题一:上面那个页面中第14行里的 m[3] 是什么意思?中括号代表什么?中括号中为什么要是3?
http://www.oschina.net/code/snippet_54100_2959
问题二:上面那个页面中第01行中的 stack 是什么意思?
http://www.oschina.net/code/snippet_54100_2959
问题二:上面那个页面中第01行中的 stack 是什么意思?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>插件4,between</title>
<meta http-equiv="Content-Type" content="text/html; charset=gbk" />
<!-- 引入jQuery -->
<script src="jq.js" type="text/javascript">
</script>
<script type="text/javascript">
;
(function($){
$.extend($.expr[":"], {
between: function(a, i, m){
$("#cc").html(m[3]);
var tmp = m[3].split(",");
return tmp[0]-0<i && i<tmp[1]-0;
//tmp[0],eg为2,i>2的时候,并且i<5,另外一个边界,条件成立,根据索引值i,保留其所对应的Dom元素.
}
})
})(jQuery);
//插件应用
$(function(){
alert("执行前");
$("div:between(2,5)").css("background","white");
alert("执行后");
})
</script>
</head>
<body>
<div style="background:red">
0
</div>
<div style="background:blue">
1
</div>
<div style="background:green">
2
</div>
<div style="background:yellow">
3
</div>
<div style="background:gray">
4
</div>
<div style="background:orange">
5
</div>
<div id="cc"></div>
</body>
</html>m[3]就是2,5,也就是div:between(2,5)
$("div:between(2,5)")m的值是:[
':between(2,5)', // 0
'between', // 1
'', // 2
'2,5' // 3
]m作为一个数组当然可以用中括号了!stack 是作为选择器使用以后获取的所有元素集合!上例就是所有的div元素!
这下终于豁然开朗了,谢谢仁兄!
不过还有一事不明,stack这个参数好像可以省略,省略就是使用其默认值,那可以肯定,它的默认值就是获取所有元素,那要是不省略呢,是不是还有其它设定,比如说是不是可以不猎取所有的元素
代码里我用程序显示了m[3],难道你就不知道举一反三,变通一下,直接把m[0],m[1],甚至整个m显示出来吗?晕死!即使你不知道复杂的应用,最起码应该知道JS里数组是长什么样的吧!自己多动手,其实很多问题都能够自己解决的,而且还能学得更深入!
当你使用$.expr[":"]这个扩展选择器时,jquery就会可以给你传递这个4个参数,无论你是否会使用,他都会传这个4个参数!
无论你是否明确声明参数的个数是否4个,jquery都会传递这4个参数!
你可以认为,当你使用$.expr[":"]扩展选择器时,就会传递4个参数:当前元素本身,当前索引值,选择器匹配符参数,和所有要筛选的元素集合!其实这个相当于$es = $('div');
$es.each(function(i,n){
// 无论你between怎么实现,jquery就是这样调用between的
between(n, i, ['', ''], $es);
});