serializeObject 的问题

打菜鸟 发布于 2012/04/12 20:50
阅读 10K+
收藏 0

$.fn.serializeObject = function() {
 var o = {};
 var a = this.serializeArray();
 $.each(a, function() {
  if (o[this.name]) {
   if (!o[this.name].push) {
    o[this.name] = [ o[this.name] ];
   }
   o[this.name].push(this.value || '');
  } else {
   o[this.name] = this.value || '';
  }
 });
 return o;
};

$("#form").serializeObject()我用这个调用上面的方法的时候为什么提示没有方法错误。求解那个大哥帮忙解答一下

加载中
0
Jeky
Jeky

扩展方法用

$.fn.extend({
    funName1 : function(){...}
})

打菜鸟
还在么前辈是不是有什么我没有加载的原因哦(比如说jquery本身的一些什么东西)
打菜鸟
在这这个方法的时候我调用了一下 jquery json-2.2.min.js这个的时候也是出现了相同的问题。那个方法头是这样写的(function($){$.toJSON=function(o) { }} 而我调用时这样写的 $.toJSON()仍然出现的是为存在方法
Jeky
Jeky
回复 @打菜鸟 : 就是给JQuery添加你自己自定义的方法,不是原来自带的
打菜鸟
什么扩展方法没有弄明白您的意思
0
Jeky
Jeky

一个最简单的范例:

<html>
	<head>
		<script type="text/javascript" src="jquery.js"></script>
		<script type="text/javascript">
		//给$()添加自定义方法
		$.fn.extend({
			fun1 : function() {
					alert(1);
				}
		});
		//给$添加自定义方法
		$.fun2 = function(){
			alert(2);
		};
		
		$(document).ready(function(){
			$("body").fun1();
			$.fun2();
		});
		</script>
	</head>
	<body>
	</body>
</html>

如果你怀疑自己没有引用某个库,可以使用Chrome或者FF的调试。

Chrome直接按F12,然后查看resource,就能看到都加载了哪些资源了。

FF得装Firebug,好久不用忘记了。

Jeky
Jeky
回复 @打菜鸟 : 看看你添加的位置和你的调用的位置 他们的执行顺序如果反过来就会未找到方法
打菜鸟
前辈刚刚试过了。我把这个单独拿出来放在外面运行 正常。但是放在写的那个程序里面去就是为找到方法。纠结啊
打菜鸟
谢谢。我先尝试一下
0
Jeky
Jeky

哦 对了 一般的插件是这么来添加方法的:

(function($){
	$.fn.extend({
		fun1 : function() {
				alert(1);
			}
	});
	$.fun2 = function(){
		alert(2);
	};
})(jQuery);

怕你理解有困难,就没这么写。

打菜鸟
恩我下载的也是这样写的。现在快解决了。但是又开始迷茫了。应该把那个写在当前的JSP页面上可以正常运行。但是写在另外一个JS文件里面就不能运行。在努力一把应该就可以了。谢谢了前辈。
0
馨梦凡
馨梦凡

我的也是这种情况,必须将扩展的js方法写在这个jsp页面中才可以使用。

如果写在另外一个js文件里面就提示:TypeError: $(...).fun1 is not a function

求解决方案

返回顶部
顶部