jQuery-1.6.2.min.js和jquer-1.10.2min.js全选时的区别

最近项目jquery有2个版本,1.6.2.min.js和1.10.2.min.js,一直没搞明白为什么要同时用2个,做了个多选框全选功能,1.6.2版本的没问题,1.10.2版本的全选只有第一次出效果,以后就全选不了,但checked属性已经有了,就是页面UI没有效果。代码如下:

//全选
				$("#all_checked").click(function() {
					var boo = $(this).is(":checked");
					$("input[type=checkbox]").each(function() {
						if($(this).attr("class") != "zdybox") {
							$(this).attr("checked", boo);
							$(this).click(function() {
								if(!$(this).is(":checked")) {
									$("#all_checked").attr("checked", false);
								}
							});
						}
					});
				});

百度查了发现用checked属性(准备说是特性)时,不能用attr,改为以下代码就行了:

//全选
				$("#all_checked").click(function() {
					var boo = $(this).is(":checked");
					$("input[type=checkbox]").each(function() {
						if($(this).attr("class") != "zdybox") {
							$(this).attr("checked", boo);
							$(this).click(function() {
								if(!$(this).is(":checked")) {
									$("#all_checked").prop("checked", false);
								}
							});
						}
					});
				});


原因是,从百度搜索的原因,jquery版本的区别:

attributes和properties之间的差异在特定情况下是很重要。jQuery 1.6之前 ,.attr()方法在取某些 attribute 的值时,会返回 property 的值,这就导致了结果的不一致。从 jQuery 1.6 开始, .prop()方法 方法返回 property 的值,而 .attr() 方法返回 attributes 的值。 
 
例如, selectedIndex, tagName, nodeName, nodeType, ownerDocument, defaultChecked, 和 defaultSelected 应使用.prop()方法进行取值或赋值。 在jQuery1.6之前,这些属性使用.attr()方法取得,但是这并不是元素的attr属性。他们没有相应的属性(attributes),只有特性(property)。 



猜你喜欢

转载自blog.csdn.net/caisenbinbeida2009/article/details/38580071