jQuery技术

CSS和javascript+jQuery技巧小结

字号+ 作者:H5之家 来源:H5之家 2017-04-22 16:00 我要评论( )

!--table.dataintable{border:1px solid #AAAAAA;border-collapse:collapse;font-family:Arial,Helvetica,sans-serif;margin-top:10px;width:100%}table.dataint

一、使用JQuery设置和改变CSS透明度 :

直接使用jQuery设置CSS透明度更直观更容易实现,因为你不需要考虑浏览器的兼容性,在IE下元素是否“haslayout”

$(".dropzone .dz-default.dz-message").css({ opacity: 0.5 }); // 所有浏览器有效
您也可以使用下面的jQuery代码使一个元素动画透明:

代码:

$(".dropzone .dz-default.dz-message").animate({ opacity: 0.5 }, 1000, function() { // 动画完成,所有浏览器下有效  });

不管元素的透明度在动画开始时是多少,它都会渐变到透明度为“0.4”。动画的速度通过值“1000”设定,动画时间以毫秒为单位。代码中的最后一个属性是一个可选回调函数,将在动画完成后执行。

如果该元素的透明度在CSS中已经设定为“0.4”,那在动画运行的时候,你将不会发觉有任何不同,所以动画开始和最终透明度要有所不同。

二、表格单元格宽度的设定和强制折行规定

有时候报表的字段包含文字比较多,如果使用自动布局,表格会有滚动条,对宏观查看整表的数据不是很方便。这时候改用固定布局,强制折行可以解决问题。

所有浏览器都支持 table-layout 属性。该属性有三种取值:


auto 默认。列宽度由单元格内容设定。

fixed 按照你设定的表格宽度或列宽显示数据,不受内容本身宽度影响。

inherit 规定应该从父元素继承 table-layout 属性的值。

注释:任何的版本的 Internet Explorer (包括 IE8)都不支持属性值 "inherit"。

解决方式:CSS代码:

.table { table-layout: fixed; word-wrap: break-word;  }

三、PHP去除数组重复元素

PHP数组去除重复内置函数有array_unique和array_flip。传统使用array_unique函数的效率较低。而array_flip函数比较快,速度提高五倍以上,因为该函数是将每个数组元素的key-value值交换,然后自动覆盖重复的键,再切换回来。

所以建议使用array_flip函数去重。写法:$arr = array_flip(array_flip($arr)); //经过两次可以删除重复元素。

四、jQuery Ajax数据格式json注意事项

Jquery1.4版本以后对json格式要求更加严格,如果设定dataType为json,一定要保证json格式符合json.org网站定义的格式才能执行success回调函数,否则执行onerror异常处理函数。跨域调用时,服务端会接收到一段$_GET['callback']的字符串。你需要在服务端将这段字符串拼接在需要返回的数据的前共同返回。例如在控制器函数中最后这样输出:echo $_GET['callback'] . '(' . json_encode($data) . ')';

JSON格式的大概注意点列一下:
1)键名称:用双引号括起
2)字符串:使用双引号括起
3)数字、布尔类型:不需要使用双引号括起 

援引jQuery API 说明原文:"json": Evaluates the response as JSON and returns a JavaScript object. In jQuery 1.4 the JSON data is parsed in a strict manner; any malformed JSON is rejected and a parse error is thrown. (See json.org for more information on proper JSON formatting.)

目前有许多免费的json在线验证器,如果不确定自己写的json格式是否标准,可以利用诸如JSONLint等在线校验工具,对json进行检验。一个不错的验证网站奉上:?u=http://www.bejson.com/index.php

如果ajax使用默认格式不强制定义json格式,则服务端echo内容不需要拼接$_GET['callback']的字符串,但是在回调函数中需要通过eval()函数将json字符串转换为js对象,这样返回的data才能以类似data.res的方式调用。eval加上圆括号的目的是迫使eval函数在评估JavaScript代码的时候强制将括号内的表达式(expression)转化为对象,而不是作为 语句(statement)来执行。举一个例子,例如对象{},如若不加外层的括号,那么eval会将大括号识别为JavaScript代码块的开始和结 束标记,那么{}将会被认为是执行了一句空语句。如:对json:{"sex":["man"],"address":["zjningbo"],"name":["cssrain"]} 执行eval函数: var jsObject=eval("("+json+")");得到的jsObject是({"sex":["man"],"address":["zjningbo"],"name":["cssrain"]}) 。

列出项目中的代码:

<script type="text/javascript"> $(function(){ $posarea = $(".posarea"); $postit = $(".posarea .ptit span"); $(".setpos").click(function(){ var rid = $(this).parent().siblings('td').eq(0).text(); var titt = $(this).parent().siblings('td').eq(1).text(); var tname = $.trim($(this).parent().siblings('td').eq(2).text()); var typelv; var os = $("#resos").val(); $("#resid").val(rid); $postit.text(titt); get_pos_data(rid,os); if(tname == '文章'){ typelv = 1; }else if(tname == '资源专题'){ typelv = 3; }else if(tname == 'PK'){ typelv = 4; } if(typelv){ $("#restype").val(typelv); }else{ alert("未获取到类型(a_type),请重试"); } $posarea.fadeIn(100); }); $(".closepos").click(function(){ $posarea.fadeOut(); }); $("#ajaxbtn").click(function(){ var rid = $("#resid").val(); var os = $("#resos").val(); var a_type = $("#restype").val(); update_pos_data(rid,os,a_type); $posarea.fadeOut(100); }); //查询状态信息 function get_pos_data(id,os){ var str = ""; $.ajax({ type : "post", url : "?c=wansha&a=get_pos&callback=?", //dataType : "json", data : {"id":id, "os":os}, success : function(msg) { msg = eval('(' + msg + ')'); if(msg.res === 1){ $.each(msg.data, function(i,record){ str += "<li><input type='checkbox' "; if(record.status == 1){ str += " checked='checked' "; } str += " /><span>" + record.title + "</span></li>"; }) $(".poscontent ul").html(str); } } }); } //更新状态信息 function update_pos_data(id, os, a_type){ var str = ""; var arr = [], currid, currval; $(".poscontent ul li").each(function(i,val){ var obj = new Object(); currid = val.id; if($(this).children("input:checkbox").attr("checked")){ currval = 1; }else{ currval = 0; } obj['posid'] = currid; obj['posstatus'] = currval; arr.push(obj); }); arr = JSON.stringify(arr);//序列化:将一个js对象或数组转换为一个包含 JSON 文本的字符串。 $.ajax({ type : "post", url : "?c=wansha&a=update_pos&callback=?", dataType : "json", data : {"id":id, "os":os,"status":arr,"a_type":a_type}, success : function(sucmsg) { if(sucmsg.res==1){ alert("保存成功"); //window.location.href="?c=wansha&a=list_article_test"; } else { alert("数据未更新或更新失败!"); } } }); } }); </script>

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 有效提高 jQuery 代码效率的25个技巧(3)

    有效提高 jQuery 代码效率的25个技巧(3)

    2017-04-23 13:00

  • 了解jQuery技巧来提高你的代码(个人觉得那个jquery的手册很不错)

    了解jQuery技巧来提高你的代码(个人觉得那个jquery的手册很不错)

    2017-04-22 15:03

  • jQuery使用注意点技巧2——jQuery 选择器详解

    jQuery使用注意点技巧2——jQuery 选择器详解

    2017-04-21 14:00

  • jQuery技巧之让任何组件都支持类似DOM的事件管理,jquerydom

    jQuery技巧之让任何组件都支持类似DOM的事件管理,jquerydom

    2017-04-20 18:03

网友点评
=