4
回答
serializeObject 的问题
【腾讯云】校园拼团福利,1核2G服务器10元/月!>>>   

$.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()我用这个调用上面的方法的时候为什么提示没有方法错误。求解那个大哥帮忙解答一下

<无标签>
举报
打菜鸟
发帖于6年前 4回/9K+阅
共有4个答案 最后回答: 4年前

扩展方法用

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

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

一个最简单的范例:

<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,好久不用忘记了。

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

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

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

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

--- 共有 1 条评论 ---
打菜鸟恩我下载的也是这样写的。现在快解决了。但是又开始迷茫了。应该把那个写在当前的JSP页面上可以正常运行。但是写在另外一个JS文件里面就不能运行。在努力一把应该就可以了。谢谢了前辈。 6年前 回复

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

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

求解决方案

顶部