jQuery数组处理函数
目录
jQuery的数组处理函数整理如下,如有补充和建议,欢迎评论交流~
1、$.trim(value)
从value中删除任何前导或尾随的空白字符
2、$.each(container, callback(key,value))
对container的每一项进行迭代,为每一项调用回调函数callback。
container 可以是对象或数组。如果是js对象,则迭代其每个属性;如果是数组,则迭代其每个元素。
3、$.extend(target, source1, source2, ..., sourcen)
用source1...n 对象的属性来扩展target对象。返回值为扩展后的对象。
4、$.getScript(url, callback)
动态加载js脚本。并在成功获取脚本时调用回调函数。
5、$.noConflict
避免$别名冲突。一旦执行$.noConflict函数,就必须使用jQuery名称调用。
6、$.grep(array, callback, invert)
遍历已传入的数组,为各元素调用对调函数。回调函数的返回值决定是否把当前元素收集到新数组,新数组作为$.grep的返回值。callback回调函数需要返回一个bool类型的值。如果invert省略或为false,则回调函数返回TRUE的元素被收集到返回结果中。invert为true,则回调函数返回false的元素被收集到返回结果中。
7、$.map(array,[callback])
转换函数会为每个数组元素调用, 而且会给这个转换函数传递一个表示被转换的元素作为参数. 转换函数可以返回转换后的值、null(删除数组中的项目)或一个包含值的数组, 并扩展至原始数组中。
8、$.inArray(val,array)
判断值是否存在于数组中,从0开始计数(如果没有找到则返回-1)
9、$.merge(first,second)
合并两个数组。返回的结果会修改第一个数组的内容——第一个数组的元素后面跟着第二个数组的元素。这个方法是用jQuery的方法替代原生concat()方法, 但功能并没有concat()强大, concat()可以同时合并多个数组。
10、$.unique(array)
过滤数组中重复元素,删除数组中重复元素. 只处理删除DOM元素数组,而不能处理字符串或者数字数组
11、$.makeArray(obj)
将类数组对象转换为数组对象, 类数组对象有 length 属性,其成员索引为0至 length-1。
12、$(dom).toArray()
把jQuery集合中所有DOM元素恢复成一个数组。并不常用的方法, 个人甚至觉得它和$.makeArray一样多余.
小的方法收藏
获取这个月1日 和 N个月后的1日的 时间日期 列:2021-09-01
type true 当前月向后的 last个月 false 当前月向前 last个月
function getYearDay(last=1,type=false){
var date = new Date();
var year = date.getFullYear();//取当前的年份
var month = date.getMonth() + 1;
if(type){
var last_year = year;
var last_month= month + last;
if(last_month > 12){
last_month = last_month -12;
last_year++;
}
return {now:year +'-'+ month +'-01',end:last_year +'-'+ last_month +'-01' } ;
}
var last_year = year;
var last_month= month - last;
if(last_month < 1){
last_month = 12- ( last - month);
last_year--;
}
return {now:last_year +'-'+ last_month +'-01',end:year +'-'+ month +'-01'} ;
}
/************************ 优化版 ***********************************/
function getYearDay(last=1,type=false){
var date = new Date();
let now = new Date();
let end = new Date( date.setMonth(date.getMonth() - last) );
if(type){
end = new Date( date.setMonth(date.getMonth() + last) );
return {now:now,end:end} ;
}
return {now:end,end:now} ;
}
/*********************** 优化版 *************************************/
比之自己写的哪个好用多了 2021-9-26 补充
/*********************** 推荐这个用法 实在是简介的很 *****************/
var startDate = new Date();
startDate.setMonth(startDate.getMonth() - 6);
/*********************** 推荐这个用法 实在是简介的很 *****************/
对cs除数,和bcs被除数 进行百分比取小时点2位
function getBaiFenBi(cs,bcs){
let val = (cs / bcs) * 100;
return new Number(val).toFixed(2) +'%';
}
对console.log 的分装/就是懒的 不想打console
arguments 是不固定参数 的集合 小知识
var log = function(form){
for (var i = 0; i < arguments.length; i++) {
console.log(arguments[i]);//在这里输出传过来的参数
}
}
/**
利用js 实现一个下载 this_url 是文件的url 地址
*/
function download_upload(obj){
var this_url = $(obj).attr('dataUrl');
var a = document.createElement('a');
a.download = 'data.doc';
a.href=this_url;
a.click()
}
删除一个数组下标
properties['defValue']=[]
properties['defValue'].splice(index,1);
验证url是否正确
function checkUrl (url) {
var strRegex = '^((https|http|ftp|rtsp|mms)?://)?'
+'(([0-9a-z_!~*().&=+$%-]+: )?[0-9a-z_!~*().&=+$%-]+@)?' //ftp的user@
+'(([0-9]{1,3}.){3}[0-9]{1,3}|'// IP形式的URL- 199.194.52.184
+'([0-9a-z_!~*()-]+.)*'// 域名- www.
+'[a-z]{2,6})'//域名的扩展名
+'(:[0-9]{1,4})?'// 端口- :80
+'((/?)|(/[0-9a-z_!~*().;?:@&=+$,%#-]+)+/?)$';
return new RegExp(strRegex).test(url);
}
JQuery 的选择器
收藏一位大牛的 https://www.cnblogs.com/swjian/p/6363614.html
1 .基本选择器
$("#test") 选择id值为test的元素,id值是唯一的所以返回单个元素。
$("div") 选择所有的div标签元素,返回div元素数组
$(".myclass") 选择使用myclass类的css的所有元素
$("*") 选取所有元素。
$("#test,div,.myclass") 选取多个元素。
2.层次选择器
$("div span") 选取<div>里的所有<span>元素
$("div >span") 选取<div>元素下元素名是<span>的子元素
$("#one +div") 选取id为one的元素的下一个<div>同辈元素 等同于$("#one").next("div")
$("#one~div") 选取id为one的元素的元素后面的所有<div>同辈元素 等同于$("#one").nextAll("div")
$("#one").siblings("div") 获取id为one的元素的所有<div>同辈元素(不管前后)
$("#one").prev("div") 获取id为one的元素的前面紧邻的同辈<div>元素 所以 获取元素范围大小顺序依次为:
$("#one").siblings("div")>$("#one~div")>$("#one +div") 或是
$("#one").siblings("div")>$("#one").nextAll("div")>$("#one").next("div")
3.基本过滤选择器
$("div:first") 选取所有<div>元素中第1个<div>元素
$("div:last") 选取所有<div>元素中最后一个<div>元素
$("input:not(.myClass)") 选取class不是myClass的<input>元素
$("input:even") 选取索引是偶数的<input>元素(索引从0开始)
$("input:odd") 选取索引是基数的<input>元素(索引从0开始)
$("input:eq(2)") 选取索引等于2的<input>元素
$("input:gt(4)") 选取索引大于4的<input>元素
$("input:lt(4)") 选取索引小于4的<input>元素
$(":header") 过滤掉所有标题元素,例如:h1、h2、h3等
$("div:animated") 选取正在执行动画的<div>元素
$(":focus") 选取当前获取焦点的元素
4.内容过滤选择器
$("div:contains('Name')") 选取所有<div>中含有'Name'文本的元素
$("div:empty") 选取不包含子元素(包括文本元素)的<div>空元素
$("div:has(p)") 选取所有含有<p>元素的<div>元素
$("div:parent") 选取拥有子元素的(包括文本元素)<div>元素
5.可见性过滤选择器
$("div:hidden") 选取所有不可见的<div>元素
$("div:visible") 选取所有可见的<div>元素
6.属性过滤选择器
$("div[id]") 选取所有拥有属性id的元素
$("input[name='test']") 选取所有的name属性等于'test'的<input>元素
$("input[name!='test']") 选取所有的name属性不等于'test'的<input>元素
$("input[name^='news']") 选取所有的name属性以'news'开头的<input>元素
$("input[name$='news']") 选取所有的name属性以'news'结尾的<input>元素
$("input[name*='news']") 选取所有的name属性包含'news'的<input>元素
$("div[title|='en']") 选取属性title等于'en'或以'en'为前缀(该字符串后跟一个连字符'-')的<div>元素
$("div[title~='en']") 选取属性title用空格分隔的值中包含字符en的<div>元素
$("div[id][title$='test']") 选取拥有属性id,并且属性title以'test'结束的<div>元素
7.子元素过滤选择器
$("div .one:nth-child(2)") 选取class为'one'的<div>父元素下的第2个子元素
$("div span:first-child") 选取每个<div>中的第1个<span>元素
$("div span:last-child") 选取每个<div>中的最后一个<span>元素
$("div button:only-child") 在<div>中选取是唯一子元素的<button>元素
8.表单对象属性过滤选择器
$("#form1 :enabled") 选取id为'form1'的表单内所有可用元素
$("#form2 :disabled") 选取id为'form2'的表单内所有不可用元素
$("input :checked") 选取所有被选中的<input>元素
$("select option:selected") 选取所有的select 的子元素中被选中的元素
9.表单选择器
$(":input") 选取所有<input>,<textarea>,<select> 和 <button>元素
$(":text") 选取所有的单行文本框
$(":password") 选取所有的密码框
$(":radio") 选取所有单的选框
$(":checkbox") 选取所有的多选框
$(":submit") 选取所有的提交按钮
$(":image") 选取所有的图像按钮
$(":reset") 选取所有的重置按钮
$(":button") 选取所有的按钮
$(":file") 选取所有的上传域
$(":hidden") 选取所有不可见元素
class 下 input 的name 选择器
let node = $('#from-add-input').find('.layui-input-inline :input[name="'+name+'[]"]');
属性选择器
$.each($('#from-add-input').find('.layui-inline [data="reduce"]'),function(index,val){
$(val).unbind();//取消绑定事件
$(val).on('click',function(){
if( $('#from-add-input').find('.layui-inline').length >1){
$(this).parent().parent().remove();
}
})
})
Ajax 对302状态的修改
全局性的对ajax 进行302 状态处理
$(document).ajaxComplete(function (event, xhr, settings) {
if (xhr.responseJSON != undefined && xhr.responseJSON.code == 302) {
layer.msg(xhr.responseJSON.msg, {icon: 5, shift: 6});
_this.reload(xhr);
}
if (xhr.responseJSON != undefined && xhr.responseJSON.code == 404) {
layer.msg(xhr.responseJSON.msg, {icon: 5, shift: 6});
_this.reload(xhr);
}
});
/**
后台的返回php代码 laravel 部分截取
if ($islogin) {
if ($request->ajax()) {
return response()->json(['code' => 302,'msg' => $login_msg,
'location' => '/admin/login.html','data' => []]);
} else {
return redirect('admin/login.html');
}
}
*/