前端 几个常用的方法


/*判断是不是微信内核*/
function isWeiXin(){
    var ua = window.navigator.userAgent.toLowerCase();
    if(ua.match(/MicroMessenger/i) == 'micromessenger'){
        return true;
    }else{
        return false;
    }
}


/* JSON.stringify */
// 此处为了示例, 采用字面量的形式构造了一个对象
// 实际使用中, 一般是某个POJO,或者VO之类的值对象

var myObject =  {
        "myProp": "myValue",
        "subObj": {
            "prop": "value"
        }
    };
// 格式化
var formattedStr = JSON.stringify(myObject, null, 2);


回到顶部
不需要其他插件,简单通过使用jquery 中的 animate and scrollTop 方法,就能实现
// 回到顶部

$('a.top').click(function (e) {
  e.preventDefault();
  $(document.body).animate({scrollTop: 0}, 800);
});
<!--创建一个回到顶部的按钮 -->
<a class="top" href="#">Back to top</a>
通过 改变scrollTop的值控制滚动条到达哪个位置

预加载图片
如果你的页面有很多图片,并且默认情况下是看不到的,当你鼠标移动过的时候才出现,这时候就需要 预加载功能

$.preloadImages = function () {
  for (var i = 0; i < arguments.length; i++) {
    $('img').attr('src', arguments[i]);
  }
};
 
$.preloadImages('img/hover-on.png', 'img/hover-off.png');

检测图片是否加载完成
有时候你需要去知道图片是否真正加载完成.

$('img').load(function () {
  console.log('image load successful');

});


优雅处理加载不成功的图片
使用一张默认的图片来代替加载不成功的 图片

$('img').on('error', function () {
  $(this).prop('src', 'img/broken.png');
});
Hover事件切换类
$('.btn').hover(function () {
  $(this).addClass('hover');
  }, function () {
    $(this).removeClass('hover');
  });
混合写法,
$('.btn').hover(function () {
  $(this).toggleClass('hover');
});


禁用一个表单元素
比如有时候 ,只想提交一次表单,就可以设置禁用

$('input[type="submit"]').prop('disabled', true);
如果想解禁 ,
$('input[type="submit"]').prop('disabled', false);

阻止超链接的默认行为
有时候我们常常用超链接作为按钮,但是超链接本身是有链接 会跳转的,假如我们不想要跳转的时候 就需要阻止默认行为

$('a.no-link').click(function (e) {
  e.preventDefault();
});

fade(渐入渐出)效果和slide(下拉收起)效果的切换
// 渐入渐出

$('.btn').click(function () {
  $('.element').fadeToggle('slow');
});
// 下拉收起
$('.btn').click(function () {
  $('.element').slideToggle('slow');
});


动态设置两个div的高度一样
不管他们的内容怎样 他们的高度都会保持一致
通过css设置 最低高度值,

$('.div').css('min-height', $(.main-div).height());
无论内容是什么 都保持高度一致
var $columns = $('.column');
var height = 0;
$columns.each(function () {
  if ($(this).height() > height) {
    height = $(this).height();
  }
});

$columns.height(height);


遍历设置一序列的元素的高度统一

var $rows = $('.same-height-columns');

$rows.each(function () {
  $(this).find('.column').height($(this).height());
});

新的标签或者窗口打开外部链接
$('a[href^="http"]').attr('target','_blank');
$('a[href^="//"]').attr('target','_blank');
$('a[href^="'+window.location.origin+'"]').attr('target','_self');
注意: window.location.origin 不兼容IE10 解决方案

根据内容来寻找元素
通过 jquery的contains() 方法

var search = $('#search').val();

$('div:not(:contains("'+search+'"))').hide();//表示如果没有包含search内容的都隐藏

//字符串分割
function toArray(string) {
    return string.split(',')
}

//是否字符串
function isString(o) {
    return Object.prototype.toString.call(o).slice(8, -1) === 'String'
}
//是否数字
function isNumber(o) {
    return Object.prototype.toString.call(o).slice(8, -1) === 'Number'
}
//是否对象
function isObj(o) {
    return Object.prototype.toString.call(o).slice(8, -1) === 'Object'
}
//是否数组
function isArray(o) {
    return Object.prototype.toString.call(o).slice(8, -1) === 'Array'
}

function isDate(o) { //是否时间
    return Object.prototype.toString.call(o).slice(8, -1) === 'Date'
}
//是否boolean
function isBoolean(o) {
    return Object.prototype.toString.call(o).slice(8, -1) === 'Boolean'
}
//是否函数
function isFunction(o) {
    return Object.prototype.toString.call(o).slice(8, -1) === 'Function'
}
//是否为null
function isNull(o) {
    return Object.prototype.toString.call(o).slice(8, -1) === 'Null'
}
//是否undefined
function isUndefined(o) {
    return Object.prototype.toString.call(o).slice(8, -1) === 'Undefined'
}
// 是否 为false
function isFalse(o) {
    if (!o || o === 'null' || o === 'undefined' || o === 'false' || o === 'NaN') return true
    return false
}

function isTrue(o) {
    return !this.isFalse(o)
}

//是否为ios
function isIos() {
    var u = navigator.userAgent;
    if (u.indexOf('Android') > -1 || u.indexOf('Linux') > -1) {//安卓手机
        // return "Android";
        return false
    } else if (u.indexOf('iPhone') > -1) {//苹果手机
        // return "iPhone";
        return true
    } else if (u.indexOf('iPad') > -1) {//iPad
        // return "iPad";
        return false
    } else if (u.indexOf('Windows Phone') > -1) {//winphone手机
        // return "Windows Phone";
        return false
    } else {
        return false
    }
}
//是否为PCfunction isPC() {
    var userAgentInfo = navigator.userAgent;
    var Agents = ["Android", "iPhone",
        "SymbianOS", "Windows Phone",
        "iPad", "iPod"];
    var flag = true;
    for (var v = 0; v < Agents.length; v++) {
        if (userAgentInfo.indexOf(Agents[v]) > 0) {
            flag = false;
            break;
        }
    }
    return flag;
}
//判断浏览器的类型
function browserType() {
    var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
    var isOpera = userAgent.indexOf("Opera") > -1; //判断是否Opera浏览器
    var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera; //判断是否IE浏览器
    var isEdge = userAgent.indexOf("Edge") > -1; //判断是否IEEdge浏览器
    var isFF = userAgent.indexOf("Firefox") > -1; //判断是否Firefox浏览器
    var isSafari = userAgent.indexOf("Safari") > -1 && userAgent.indexOf("Chrome") == -1; //判断是否Safari浏览器
    var isChrome = userAgent.indexOf("Chrome") > -1 && userAgent.indexOf("Safari") > -1; //判断Chrome浏览器
    if (isIE) {
        var reIE = new RegExp("MSIE (\\d+\\.\\d+);");
        reIE.test(userAgent);
        var fIEVersion = parseFloat(RegExp["$1"]);
        if (fIEVersion == 7) return "IE7"
        else if (fIEVersion == 8) return "IE8";
        else if (fIEVersion == 9) return "IE9";
        else if (fIEVersion == 10) return "IE10";
        else if (fIEVersion == 11) return "IE11";
        else return "IE7以下"//IE版本过低
    }

    if (isFF) return "FF";
    if (isOpera) return "Opera";
    if (isEdge) return "Edge";
    if (isSafari) return "Safari";
    if (isChrome) return "Chrome";
}
//格式判断
function checkStr(str, type) {
    switch (type) {
        case 'phone':   //手机号码
            return /^1[3|4|5|7|8][0-9]{9}$/.test(str);
        case 'tel':     //座机
            return /^(0\d{2,3}-\d{7,8})(-\d{1,4})?$/.test(str);
        case 'card':    //身份证
            return /^\d{15}|\d{18}$/.test(str);
        case 'pwd':     //密码以字母开头,长度在6~18之间,只能包含字母、数字和下划线
            return /^[a-zA-Z]\w{5,17}$/.test(str)
        case 'postal':  //邮政编码
            return /[1-9]\d{5}(?!\d)/.test(str);
        case 'QQ':      //QQ            return /^[1-9][0-9]{4,9}$/.test(str);
        case 'email':   //邮箱
            return /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/.test(str);
        case 'money':   //金额(小数点2)
            return /^\d*(?:\.\d{0,2})?$/.test(str);
        case 'URL':     //网址
            return /(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?/.test(str)
        case 'IP':      //IP
            return /((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))/.test(str);
        case 'date':    //日期时间
            return /^(\d{4})\-(\d{2})\-(\d{2}) (\d{2})(?:\:\d{2}|:(\d{2}):(\d{2}))$/.test(str) || /^(\d{4})\-(\d{2})\-(\d{2})$/.test(str)
    }
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值