Js、Jquery、Css 技巧集合

多年搜集,不定时更新

----------jquery 获取datagrid全选按钮----------
var checkbox = $(‘#bankDrawTable’).parent().find(“div .datagrid-header-check”).children(“input[type=‘checkbox’]”).eq(0);

----------绑定事件----------
$(checkbox).bind(‘click’,function(){//绑定事件
checkrows.splice(0,checkrows.length);
});

----------echarts 自定义双击事件----------
var cur_time = []; //每次点击的时间
function eventhandler_3(param) {
cur_time.push((new Date()).getTime()); //精确到毫秒
if (cur_time.length >= 2) {
for (var i = 0; i < cur_time.length; i++) {
if ((cur_time[i + 1] - cur_time[i]) < 300) {//毫秒之差
eventhandler_4(param);
}
}
}
}
function eventhandler_4(param) {
alert(param.value);
cur_time = [];
}
myChart.on(echarts.config.EVENT.CLICK, eventhandler_3);

----------监听元素内容变化----------
KaTeX parse error: Expected 'EOF', got '#' at position 3: ("#̲select2-chosen-…(e.target).html());});
1)DOMSubtreeModified:在DOM结构中发生的任何变化时触发。这个事件在其他任何事件触发后都会触发。
2)DOMNodeInserted:在一个节点作为子节点被插入到另一个节点中时触发。
3)DOMNodeRemoved:在节点从其父节点中被移除时触发。
4)DOMNodeInsertedIntoDocument:在一个节点被直接插入文档或通过子树间接插入到文档之后触发。这个事件在DOMNodeInserted之后触发。
5)DOMNodeRemovedFromDocument:在一个节点被直接从文档中移除或通过子树间接从文档中移除之前触发。这个事件在DOMNodeRemoved之后触发。
6)DOMAttrModified:在特性被修改之后触发。
7)DOMCharacterDataModified:在文本节点的值发生变化时触发。

----------判断是否有滚动条----------
$(function(){
$(“body”).scrollTop(10);//控制滚动条下移10px
if( $(“body”).scrollTop()>0 ){
alert(“有滚动条”);
}else{
alert(“没有滚动条”);
}
$(“body”).scrollTop(0);//滚动条返回顶部
});

1)在iframe中查找父页面元素的方法:
$(‘#id’, window.parent.document)

2)在iframe中调用父页面中定义的方法和变量:
parent.method

parent.value

WdatePicker 自定义事件,如change事件,可在页面加载完后,用jquery加入属性,如下:
$(‘#frmData .Wdate’).attr(“onchange”,“inputChange(this)”);

---------jQuery序列化后的表单值转换成Json----------
$.fn.serializeObject = function(){ var o = {}; var a = this.serializeArray(); $.each(a, function() { if (o[this.name] !== undefined) { 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;};

var jsonObj = KaTeX parse error: Expected 'EOF', got '#' at position 3: ("#̲form").serializ…(“#form”).serializeObject()); //json字符串

---------通过js指定打印的内容----------
function printForm(){
var headstr = ‘’;
var footstr = “”;
var printHtml = $(‘.printHtml’).html();
var oldstr = document.body.innerHTML;
document.body.innerHTML = headstr+printHtml+footstr;
if (!!window.ActiveXObject || “ActiveXObject” in window) { //是否ie
remove_ie_header_and_footer();
}

// 打印
window.print();
document.body.innerHTML = oldstr;
}
// ie去页眉页脚
function remove_ie_header_and_footer() {
var hkey_path;
hkey_path = “HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\PageSetup\”;
try {
var RegWsh = new ActiveXObject(“WScript.Shell”);
RegWsh.RegWrite(hkey_path + “header”, “”);
RegWsh.RegWrite(hkey_path + “footer”, “”);
} catch (e) {
}
}

指定的内容:--------------------------

-------------------------------------- 数组分组统计 --------------------------------------
var data = [
{“companyName”: “A”,“orderAmt”: 100, “Qty”: 1},
{“companyName”: “A”,“orderAmt”: 200, “Qty”: 3},
{“companyName”: “B”,“orderAmt”: 400, “Qty”: 5},
{“companyName”: “B”,“orderAmt”: 200, “Qty”: 5}
];

var map = {};
var res = [];
for(var i=0;i<data.length;i++){
var name = data[i].companyName;
if(!map[name]){
map[name] = {
companyName : name,
orderAmt : 0,
Qty : 0
}
res.push(map[name]);
}
for(var p in map[name]){
if(p != ‘companyName’){
map[name][p] += data[i][p];
}
}
}
console.log(res)

------------------------------------- 数组去重,支持IE --------------------------------------
var arr = [1,2,8,9,5,8,4,0,4];
/*
模拟: 原始数组:[1,2,8,9,5,8,4,0,4]
索引值:0,1,2,3,4,5,6,7,8
伪新数组:[1,2,8,9,5,8,4,0,4]
使用indexOf方法找到数组中的元素在元素在中第一次出现的索引值
索引值:0,1,2,3,4,2,6,7,6
返回前后索引值相同的元素:
新数组:[1,2,8,9,5,4,0]
*/
function unique( arr ){
// 如果新数组的当前元素的索引值 == 该元素在原始数组中的第一个索引,则返回当前元素
return arr.filter(function(item,index){
return arr.indexOf(item,0) === index;
});
}
console.log(unique(arr)); // 1, 2, 8, 9, 5, 4, 0
[…new Set(arr)];
去重并删除等于2的值
const arr = [1, 2, 1, 3];
const result = arr.filter((value, index) => value !== 2 && arr.indexOf(value) === index);

------------------------------------- 解决toFixed 某些情况下不能四舍五入的坑 ---------------------------------
Number.prototype.toFixed = function(d) {
var s = this + “”;
if (!d) d = 0;
if (s.indexOf(“.”) == -1) s += “.”;
s += new Array(d + 1).join(“0”);
if (new RegExp(“^(-|\+)?(\d+(\.\d{0,” + (d + 1) + “})?)\d*$”).test(s)) {
var s = “0” + RegExp.$2,
pm = RegExp.$1,
a = RegExp.KaTeX parse error: Undefined control sequence: \d at position 80: … a = s.match(/\̲d̲/g); …"), “$1.$2”);

    }
    if (b) s = s.substr(1);
    return (pm + s).replace(/\.$/, "");
}
return this + "";

};

-------------------------------- 表单自动填表,添加到jquery.form.js文件里------------------------------
调用$(‘.form’).setForm( json );
/**

  • 给表单赋值
  • by kingfu
    */
    $.fn.setForm = function(jsonValue) {
    var obj=this;
    $.each(jsonValue, function (name, ival) {
    var o i n p u t = o b j . f i n d ( " i n p u t [ n a m e = " + n a m e + " ] " ) ; i f ( oinput = obj.find("input[name=" + name + "]"); if ( oinput=obj.find("input[name="+name+"]");if(oinput.attr(“type”)== “radio” || $oinput.attr(“type”)== “checkbox”){
    KaTeX parse error: Expected '}', got 'EOF' at end of input: … if((this).val()==ival[i])
    KaTeX parse error: Expected 'EOF', got '}' at position 57: … }̲ …(this).val()ival)
    KaTeX parse error: Expected 'EOF', got '}' at position 52: … }̲ })…oinput.attr(“type”)
    “textarea”){//多行文本框
    obj.find(“[name=”+name+“]”).html(ival);
    }else{
    obj.find(“[name=”+name+“]”).val(ival);
    }
    });
    };

---------------------------- 秒转换成天时分秒 ----------------------------
function timeStamp( second_time ){
var data = {};
var time = parseInt(second_time) + “秒”;

if( parseInt(second_time )> 60){
var second = parseInt(second_time) % 60;
var min = parseInt(second_time / 60);
time = min + “分” + second + “秒”;
data.min = min;
data.second = second;

if( min > 60 ){
min = parseInt(second_time / 60) % 60;
var hour = parseInt( parseInt(second_time / 60) /60 );
time = hour + “小时” + min + “分” + second + “秒”;
data.hour = hour;
data.min = min;
data.second = second;

if( hour > 24 ){
hour = parseInt( parseInt(second_time / 60) /60 ) % 24;
var day = parseInt( parseInt( parseInt(second_time / 60) /60 ) / 24 );
time = day + “天” + hour + “小时” + min + “分” + second + “秒”;
data.day = day;
data.hour = hour;
data.min = min;
data.second = second;
}
}
}else
data.second = parseInt(second_time);

data.time = time
return data;
//return time;
}

---------------------------- 转秒 ----------------------------
function toSecond(value, type){
var returnVal = 0;
// 判断是否有值
returnVal = Number(value)?value:0;
if(null == returnVal)
return 0;
else if(‘day’ == type)
return returnVal * 86400;
else if(‘hour’ == type)
return returnVal * 3600;
else if(‘minute’ == type)
return returnVal * 60;
else if(‘second’ == type)
return returnVal;
}

---------------------------- 递归找对象 ----------------------------
function js_traverse(o, org_cd) {
var type = typeof o
if (type == “object”) {
for (var key in o) {
console.log("key: ", key, o[key])
if( o[key] == org_cd){
o.children = { ‘name’: row.ORG_NAME_C, ‘org_cd’:row.ORG_CD,‘className’:className };
// oChart.init({data: datascource});
}
js_traverse(o[key], org_cd)
}
} else {

}

}

---------------------------- JSON树转对象 ----------------------------
function convertToTreeData(data, pid) {
var result = []
var temp = []
for (let i = 0; i < data.length; i++) {
console.log(data[i].parentId, pid)
if(pid == “undefined”)
pid = undefined;
if (data[i].parentId === pid) {
var obj = { ‘title’: data[i].name, ‘id’: data[i].id }
temp = this.convertToTreeData(data, data[i].id)
if (temp.length > 0) {
obj.children = temp
}
result.push(obj)
}
}
return result
}
调用:
var nodes = [
{“id”:2,“name”:“第一级1”,“parentId”:0},
{“id”:3,“name”:“第二级1”,“parentId”:2},
{“id”:4,“name”:“第二级2”,“parentId”:2},
{“id”:5,“name”:“第三级1”,“parentId”:4},
{“id”:6,“name”:“第三级2”,“parentId”:3}
];
var treeData = convertToTreeData(nodes, 0)
console.log(treeData)

---------------------------- cookie name 和 指定路径 ----------------------------
// 定时任务监听国际化 my-locale-cookie 每10分钟
var inte=null;
clearInterval(inte); // 防重复
inte=self.setInterval(“listenI18Cookie()”, 1000 * 60 * 10);
function listenI18Cookie(){
// 过期时间 = 当前时间 + 1H
var expires = new Date().setHours(new Date().getHours() + 1);
if(document.cookie == null || document.cookie == ‘’)
document.cookie = “my-locale-cookie=” + currentUserLocale + “;expires=” + new Date(expires).toGMTString() + “;path=/”;
}

---------------------------- JS获取页面各种高宽度 ----------------------------
document.body.scrollTop等属性可以获取页面滚动距离等,但是此类属性在xhtml标准网页或者更简单的说是带标签的页面里得到的结果是0,

所以一般为了兼容性都这样写 document.documentElement.scrollTop || document.body.scrollTop;以下document属性全部推荐这种写法.

网页可见区域宽: document.body.clientHeight;
网页可见区域高: document.body.clientHeight
网页可见区域宽: document.body.offsetWidth (包括边线的宽)
网页可见区域高: document.body.offsetHeight (包括边线的高)
网页正文全文宽: document.body.scrollWidth
网页正文全文高: document.body.scrollHeight
网页被卷去的高: document.body.scrollTop
网页被卷去的左: document.body.scrollLeft
网页正文部分上: window.screenTop
网页正文部分左: window.screenLeft
屏幕分辨率的高: window.screen.height
屏幕分辨率的宽: window.screen.width
屏幕可用工作区高度: window.screen.availHeight
屏幕可用工作区宽度: window.screen.availWidth

---------------------------- Ztree使用JSON ----------------------------
var zTreeObj;
var setting = {
data: {
key: {
name: “BRACE_DEPT”
},
simpleData: {
enable: true,
idKey: “BRACE_DEPT_ID”,
pIdKey: “PARNT_DEPT_ID”,
rootPId: 0
}
}
};
var data = {BRACE_DEPT: “市場部”,
BRACE_DEPT_ID: “000301140008”,
DATA_SOURCE_USER_PREFIX: “prd”,
ISMYSQL: “false”,
IS_APP: “1”,
PARNT_DEPT: “香港分公司”,
PARNT_DEPT_ID: “00030114”}
zTreeObj = j . f n . z T r e e . i n i t ( j.fn.zTree.init( j.fn.zTree.init((“#treeDept”), setting, data);
var dataObj = result.cmpnt_ngcs_tree;
// 默认展开3层
var nodesArr = treeObj.transformToArray(treeObj.getNodes());
for (var i = 0; i < nodesArr.length; i++) {
if(nodesArr[i].level <2)
treeObj.expandNode(nodesArr[i], true, false, true);
else
treeObj.expandNode(nodesArr[i], false, false, true);
}

---------------------------- 通过获取form数据做参数导出 ----------------------------
var url = __ctx+ ‘/flow/export/exportInst’;
let newFormData = new FormData()
var data = $(‘#searchForm’).serializeArray();
$.each(data, function (i, o) {
if (o.value) {
newFormData.append(o.name, o.value);
}
});

var xhr = new XMLHttpRequest();
xhr.open(‘POST’, url, true);//post请求,请求地址,是否异步
xhr.responseType = “blob”; // 返回类型blob
xhr.setRequestHeader(“Authorization”, “Basic " + btoa(“username:password”)); // 设置 header Authorization
xhr.onload = function () {// 请求完成处理函数
if (this.status === 200) {
let fileName = ‘download.xls’;
var blob = this.response;// 获取返回值
let headerFileName = this.getResponseHeader(“Content-Disposition”) ;
if(headerFileName){
fileName = decodeURI( headerFileName.replaceAll(”“”,‘’)
.replace(‘attachment;filename=’,‘’));
}
var a = document.createElement(‘a’);
a.download = fileName;
a.href = window.URL.createObjectURL(blob);
a.click();
document.body.appendChild(a);
document.body.removeChild(a);
window.URL.revokeObjectURL(url);
$.topCall.alert(“提示”, “下载完成”);
} else {
$.topCall.error(“提示”, “下载异常”);
}
};
// 发送ajax请求
xhr.send(newFormData);
----- java 后端
response.setContentType(“application/vnd.ms-excel”);

---------------------------- 前后端接收参数 ----------------------------
接收 json 数据
----- IDEA http文件方式
POST /localhost:18080/x5/trapSync/getExcutedByRedisList
Content-Type: application/json;charset=UTF-8
Authorization: Basic YWRtaW46MQ==
{
“key”: “EXCUTED_RESULTMAE”
}
----- Ajax 方式
$.ajax({
dataType:‘json’,
url: __ctx + “/trapSync/getExcutedByRedisList”,
type: “post”,
contentType: “application/json;charset=utf-8”,
data:JSON.stringify({“key”: ‘EXCUTED_RESULT’+key}),
success: function(result) {
}
})
----- java 后端参数接收
@RequestBody Map<String, String> map

接收 form data 数据
----- IDEA http文件方式
POST /localhost:18080/x5/trapSync/getExcutedByRedisList
Content-Type: application/x-www-form-urlencoded
Authorization: Basic YWRtaW46MQ==

key=EXCUTED_RESULTMAE

GET /localhost:18080/x5/trapSync/getExcutedByRedisList?key=EXCUTED_RESULTMAE
Content-Type: application/x-www-form-urlencoded
Authorization: Basic YWRtaW46MQ==
----- Ajax 方式
$.ajax({
dataType:‘json’,
url: __ctx + “/trapSync/getExcutedByRedisList”,
type: “post”, // “get” 一样
data:{“key”: ‘EXCUTED_RESULT’+key},
success: function(result) {
}
})
----- java 后端参数接收
HttpServletRequest request 不能用 @RequestBody

----------------------------判断是否{} ----------------------------
var aa={};
$.isEmptyObject(aa)

---------- select option 排序 (selectObj 所有option)----------
var tmp = new Array();
for(var i=0;i<selectObj.length;i++){
var ops = new op();
ops._value = selectObj[i].value;
ops._text = selectObj[i].text;
tmp.push(ops);
}
tmp.sort(sortRule);
for(var j=0;j<tmp.length;j++){
selectObj[j].value = tmp[j]._value;
selectObj[j].text = tmp[j]._text;
}

// 排序
function sortRule(a,b) {
var x = a._text;
var y = b._text;
return x.localeCompare(y);
}
function op(){
var _value;
var _text;
}

------------ 下拉框样式模拟placeholder ------------

工单类型 投诉 建议 var funPlaceholder=function(element){ var placeholder=''; element.οnfοcus=function(){ if(this.value===placeholder){ this.value=""; } this.style.color=''; }; element.οnblur=function(){ if(this.value===""){ this.value=placeholder; this.style.color='graytext'; }}; //样式初始化 if(element.value===""){ element.value=placeholder; element.style.color='#A9A9A9'; }}; funPlaceholder(document.getElementById("orderType"));

------------ 动态添加js和css -----------
function addJsCssByLink(type, url) {
var doc = document;
if (type = “js”) {
var link = doc.createElement(“script”);
link.setAttribute(“type”, “text/javascript”);
link.setAttribute(“src”, url);
var heads = doc.getElementsByTagName(“head”);
if (heads.length) heads[0].appendChild(link);
else doc.documentElement.appendChild(link);
}
if (type = “css”) {
var link = doc.createElement(“link”);
link.setAttribute(“rel”, “stylesheet”);
link.setAttribute(“type”, “text/css”);
link.setAttribute(“href”, url);
var heads = doc.getElementsByTagName(“head”);
if (heads.length) heads[0].appendChild(link);
else doc.documentElement.appendChild(link);
}
}

------------ chrome浏览器不能访问本地网页 -----------
右键系统桌面或快捷工具栏上Google Chrome快捷方式图标——属性——快捷方式——目标,在最后增加“ --proxy-server=127.0.0.1:808”参数,注意最前面要加一个空格,等号后面是代理服务器IP及其端口。这样,启动Google Chrome后则无视IE的代理设置而强制使用参数后面设置的代理。修改后目标参数的形式如下:
“C:\Documents and Settings\Administrator\Local Settings\Application Data\Google\Chrome\Application\chrome.exe” --proxy-server=127.0.0.1:8080

------------ checkbox全选 -----------
$(“#thCheck”).click(function() {
if (this.checked) {
$(“input[type=‘checkbox’]”).attr(‘checked’, true)
} else {
$(“input[type=‘checkbox’]”).attr(‘checked’, false)
}
})

-------- 当页面使用iframe出现 status canceled 状态 ---------
$(“#rentDateM”).attr(“src”,“rentDateM.html”); 动态设置src

------------ js 设置全局变量后调用 -----------
window.top.变量

------------ jquery 跨域访问方法 -----------
$.ajax({
type: ‘GET’,
url: ‘https://graph.qq.com/oauth2.0/me’ + accessToken,
async: false,
dataType: “jsonp”,
jsonp: “callback”,
//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(一般默认为:callback)
jsonpCallback: “callback”,
//自定义的jsonp回调函数名,默认未jquery自动生成的随机函数名,也可以写“?”jquery会自动处理
success: function(o) {
alert(“success”);
console.log(o);
}
});

------------调用iframe页面中的方法 -----------
$(“#lesseeFileFrame”)[0].contentWindow.frameFunction();

------------行内div文字自动换行 -----------
style="word-break:break-all;

------------下拉菜单,滚动条跟着滚动 -----------
//var theObjOptions = selectObj.options;
function scrollObj(theObjOptions, selectObj) {
var height = $(selectObj).height();
var selectedIndex = theObjOptions.selectedIndex;
var length = theObjOptions.length;
var sHeight = $(selectObj)[0].scrollHeight;
var height = $(selectObj).height();
var scrollBottom = sHeight - height;
//滚动条最大高度
var st = (scrollBottom * (selectedIndex / length));
//console.log(scrollBottom + ‘,’ + (selectedIndex / length)+‘,’+ st)
setTimeout(function() {
$(selectObj).scrollTop(st);
},
500)
}

----html2canvas.min.js //截图并转为data:image/png;base64 —
html2canvas(document.body, {
allowTaint: true,
taintTest: false,
onrendered: function(canvas) {
canvas.id = “finaceCanvas”;
//生成base64图片数据
var dataUrl = canvas.toDataURL();
/* var newImg = document.createElement(“img”);
newImg.src = dataUrl;
document.body.appendChild(newImg);
console.log(dataUrl) */
});

----------数据对比,返回新的数据,data1为map,在方法中替换掉逗号和百分号
function dataContrast(month, data1, data2, data3) {
var newData = [];
for (var i = 1; i <= month; i++) {
if (data1 != null && data1 != null) {
newData.push(data1.replace(/,/g, “”).replace(‘%’, ‘’));
} else if (data2 != null && data2 != null) {
newData.push(data2.replace(/,/g, “”).replace(‘%’, ‘’));
} else if (data3 != null && data3 != null) {
newData.push(data3.replace(/,/g, “”).replace(‘%’, ‘’));
} else newData.push(null);
} //console.log(newData)
return newData;
}

------------数组最大、最小值-----------
var a=[1,22,3,5];
Math.max.apply(null, a);//最大值
Math.min.apply(null, a);//最小值

------------后台返回object json,给表单赋值-----------
写在jquery.min.js或jquery.form.js中
$.fn.setForm = function(jsonValue) {
var obj = this;
$.each(jsonValue,
function(name, ival) {
var o i n p u t = o b j . f i n d ( " i n p u t [ n a m e = " + n a m e + " ] " ) ; i f ( oinput = obj.find("input[name=" + name + "]"); if ( oinput=obj.find("input[name="+name+"]");if(oinput.attr(“type”) == “radio” || $oinput.attr(“type”) == “checkbox”) {
KaTeX parse error: Expected '}', got 'EOF' at end of input: …+) { if ((this).val() == ival) KaTeX parse error: Expected 'EOF', got '}' at position 41: …hecked"); }̲ } else { …(this).val() == ival) KaTeX parse error: Expected 'EOF', got '}' at position 40: …checked"); }̲ }); } els…oinput.attr(“type”) == “textarea”) {
//多行文本框
obj.find(“[name=” + name + “]”).html(ival);
} else {
obj.find(“[name=” + name + “]”).val(ival);
}
});
};
调用:
$(‘.layui-layer #roleForm’).setForm(result);
//表单赋值

------------layer中弹出层内容点击事件不起作用-----------
1》》.click只能为页面现有的元素绑定点击事件,如果是动态生成的新的元素,是没有事件的
2》》而$(document).on(“click”,“指定的元素”,function(){});方法则是将指定的事件绑定在document上,而新产生的元素如果符合指定的元素,那就触发此事件
不起作用:
$(‘#test’).on(‘click’, function() {
layer.msg(‘响应点击事件’);
});
起作用了:
$(document).on(‘click’, ‘#test’, function() {
layer.msg(‘响应点击事件’);
});

------------监控iframe内的点击事件 -----------
KaTeX parse error: Expected '}', got 'EOF' at end of input: … //(“#ifr_id”).contents().find(“body”).attr(“onclick”, “parent.show_body_click()”);
// 方法二
$(“#ifr_id”).contents().find(“body”).click(show_body_click);
});

------------jqgrid插件中,刷新列表中的内容,需要先清空掉原有的数据,再刷新数据内容--------
$(“.layui-layer #menuGrid”).jqGrid(‘clearGridData’);
//清空表格
//刷新表格
$(“.layui-layer #menuGrid”).jqGrid(‘setGridParam’, {
datatype: “local”,
data: grid_data,
page: 1
}).trigger(“reloadGrid”);

-----------层级很深的iframe用jquery获取最顶级的元素 -----------
$(“#顶级框架的id”,top.window.document).html()

------------table中获取选中的checkbox-----------
var idsstr = “”;
var zhi = “”;
var str = “”;
KaTeX parse error: Expected 'EOF', got '#' at position 3: ("#̲sysFileItem tbo…(this))
//idsstr += ( t h i s ) . v a l ( ) + " , " ; / / 获取所有 c h e c k b o x 的值 i f ( (this).val() + ","; //获取所有checkbox的值 if ( (this).val()+",";//获取所有checkbox的值if((this).attr(“checked”))//如果被选中
zhi += $(this).val() + “,”;//获取被选中的值
})

------------模拟表单提交同步方式下载文件 // 能够弹出保存文件对话框 -----------
var url = “http://localhost:8080/ajaxDownloadServlet.do”;
var fileName = “testAjaxDownload.txt”;
var form = ( " < f o r m > < / f o r m > " ) . a t t r ( " a c t i o n " , u r l ) . a t t r ( " m e t h o d " , " p o s t " ) ; f o r m . a p p e n d ( ("<form></form>").attr("action", url).attr("method", "post"); form.append( ("<form></form>").attr("action",url).attr("method","post");form.append((“”).attr(“type”, “hidden”).attr(“name”, “fileName”).attr(“value”, fileName));
form.appendTo(‘body’).submit().remove();

------------正则表达式去逗号 -----------
.replace(/,/g,‘’);

------------undefined类型判断 -----------
typeof(value) == ‘undefined’

------------AngularJS 使用jquery 对input 的value 进行改变,同步到ng-model上。-----------
$(“#id”).val(value).trigger(‘change’);

------------重复调用的echarts -----------
$(‘#’+id).removeAttr(‘echarts_instance’); //去属性后重新渲染

------------table th 对角线 -----------
/模拟对角线/
.out {
border - top: 0.4rem#D6D3D6 solid;
/上边框宽度等于表格第一行行高/
width: 0px;
/让容器宽度为0/
height: 0px;
/让容器高度为0/
border - left: 1.5rem#f4f4f4 solid;
/左边框宽度等于表格第一行第一格宽度/
position: relative;
/让里面的两个子容器绝对定位/
}
v {
font - style: normal;
display: block;
position: absolute;
top: -0.4rem;
left: -0.5rem;
width: 0.5rem;
}
em {
font - style: normal;
display: block;
position: absolute;
top: -0.28rem;
left: -1.3rem;
width: 0.55rem;
}
/模拟对角线end./
< th >

TO < /v> FROM

------------判断是否IE浏览器-----------
if (!!window.ActiveXObject || “ActiveXObject” in window){ this.isIE = true;}


获取layer 中 iframe body,并获取 元素 -----------
layer.getChildFrame(‘body’,index).find(‘#detailForm’)

------------数组对象是否存在某个值 -----------
var a = [{id:1, name: ‘aaa’},{id:2, name: ‘bbb’}];
return a.findIndex(item => item.name === ‘bbbxx’);
------------数组去重 -----------
function uniqueArr(arr) {
var newArr = arr.filter((item, index) => {
return arr.indexOf(item) === index;
})
return newArr;
}
------------数组对象去重 -----------
function uniqueArr(arr, key) {
var result = [];
var obj = {};
for (var i = 0; i < arr.length; i++) {
if (!obj[arr[i][key]]) {
result.push(arr[i]);
obj[arr[i][key]] = true;
}
}
return result
}

------------ bootstrap modal 垂直居中 -----------
.modal - dialog {
position: absolute ! important;
top: 45 % !important;
left: 50 % !important;
transform: translate( - 50 % , -50 % ) ! important; - webkit - transform: translate( - 50 % , -50 % ) ! important; - moz - transform: translate( - 50 % , -50 % ) ! important; - ms - transform: translate( - 50 % , -50 % ) ! important; - o - transform: translate( - 50 % , -50 % ) ! important;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值