1 interval =setInterval(sendMessage,3000); 2 function sendMessage(){ 3 //每隔5妙中向服务器发送ajax 请求 4 $.post( 5 "test", 6 {"city[0]":'shanghai',"city[1]":'beijing',"city[2]":'chengdu'} 7 ,function(result){ 8 // $("#username-input").val(result); 9 console.log(result); 10 result = eval("("+result+")"); 11 console.log(result); 12 $("#price-shanghai").html(result.city[0]) ; 13 $("#price-beijing").html(result.city[1]) 14 $("#price-chengdu").html(result.city[2]); 15 }); 16 }
setInterval的函数名称不能跟上()否则只能执行一次,被坑惨了!!补充这是因为函数的作用域的问题
关于对代码的封装
1、原则上每个方法只能做一件事情,并且经过测试。
2、使用对象的方法封装成属性和方法的形式
1 var Obj = { 2 var a; 3 var b = function(){ 4 ... 5 } 6 7 }
调用就使用obj.b()
3、封装jquery 插件
1 // plugin definition 2 $.fn.hilight = function(options) { 3 var defaults = { 4 foreground: 'red', 5 background: 'yellow' 6 }; 7 // Extend our default options with those provided. 8 var opts = $.extend(defaults, options); 9 // Our plugin implementation code goes here. 10 }; 11 我们的插件可以这样被调用: 12 $('#myDiv').hilight({ 13 foreground: 'blue' 14 });
有两种封装的方式:
jQuery为开发插件提拱了两个方法,分别是:
jQuery.fn.extend(object); 给jQuery对象添加方法。
jQuery.extend(object); 为扩展jQuery类本身.为类添加新的方法。
一个方法名代表的是这个方法的指针位置,加上括号如functionName()就是执行这个方法。
绑定事件要注意是否已经存在这个元素,不存在使用live()方法
一个方法直接写方法名,意思是这个方法的指针位置;加上括号那就是马上执行这个方法
清除事件队列的方法
$('.stop').live('click',function(){
$('.box').clearQueue('slideList');
})
mouseover 和mouseenter的区别为,mousenter不会冒泡,也就是如果被子元素挡住了就不会被触发,mouseover就会被触发。就这么简单
如果表单 设置了
auto;
会造成无法提交