替代jquery中的几个函数
// https://open.alipay.com/developmentAccess/developmentAccess.htm
var $ = window.jQuery;
(function() {
if (!NodeList.prototype.forEach) {
NodeList.prototype.forEach = function(action) {
for(var i = 0, l = this.length; i < l; i++) {
action(this[i]);
}
};
}
var q = document.querySelectorAll.bind(document);
var on = function(dom, event, cb) {
if (!dom) return;
if ('length' in dom) {
return dom.forEach(function(elem){
on(elem, event, cb);
});
}
dom.addEventListener(event, cb);
};
var hasClass = function(dom, className) {
if (!dom) return;
if ('length' in dom) {
for(var i = 0, l = dom.length; i < l; i++){
if (hasClass(dom[i], className)) return true;
}
return false;
}
if (dom.classList) return dom.classList.contains(className);
return dom.className.split(' ').indexOf(className) >= 0;
};
var addClass = function(dom, className) {
if (!dom) return;
if ('length' in dom) {
return dom.forEach(function(elem){
addClass(elem, className);
});
}
if (dom.classList) return dom.classList.add(className);
dom.className += ' ' + className;
};
var removeClass = function(dom, className) {
if (!dom) return;
if ('length' in dom) {
return dom.forEach(function(elem){
removeClass(elem, className);
});
}
if (dom.classList) return dom.classList.remove(className);
var length = className.length;
if (dom.className.indexOf(className + ' ') === 0) return dom.className = dom.className.substr(length);
if (dom.className.indexOf(' ' + className) === dom.className.length - length - 1) return dom.className = dom.className.substr(0, dom.className.length - length - 1);
console.log(dom.className);
return dom.className = dom.className.replace(' ' + className + ' ', '');
};
var parents = function(dom, className) {
if (!dom) return null;
var p = dom.parentNode;
while(p) {
if (hasClass(p, className)){
return p;
}
p = p.parentNode;
}
return p;
};
// 点击登录
on(q('#open-menu-login'), 'click', function(e){
var curUrl=document.location.href;
var loginUrl = "https://auth.alipay.com/login/ant_sso_index.htm?goto=" + encodeURIComponent(curUrl);
window.location.href=loginUrl;
e.preventDefault();
});
//点击退出
on(q('.logout-link'), 'click', function(e){
var logoutUrl=encodeURIComponent(document.location.href);
window.location.href="https://auth.alipay.com/login/logout.htm?goto=" + logoutUrl;
e.preventDefault();
});
// 判断子菜单为当前页面,一级导航高亮显示
q('.open-submenu-item').forEach(function(item){
if(hasClass(item, 'selected')){
var parent = parents(item, 'open-menu-item');
parent && addClass(parent, 'selected');
parent && addClass(parent, 'can-disabled-select');
}
});
// 点击搜索出现搜索框
on(q('#nav-search'), 'click', function(event){
addClass(q('#open-nav-right-menu'), 'open-search-mode');
q('#J_SearchKeyword')[0].focus();
});
//点击其他区域搜索框消失
on(q('#nav-search-input'), 'click', function(event){
event.stopPropagation();
});
on(document, 'click', function(){
removeClass(q('#open-nav-right-menu'), 'open-search-mode');
});
window.ENV = (function() {
var host = window.location.host;
var env = 'prod';
if (host.indexOf('.alipay.com') >= 0 && false) {
env = 'pre';
} else if (host.indexOf('test.alipay.net') >= 0) {
env = 'test';
} else if (host.indexOf('.alipay.net') >= 0) {
env = 'dev';
}
return env;
})();
}());
替代jquery中的几个函数的更多相关文章
- jquery中attr()与prop()函数用法实例详解(附用法区别)
本文实例讲述了jQuery中attr()与prop()函数用法.分享给大家供大家参考,具体如下: 一.jQuery的attr()方法 jquery中用attr()方法来获取和设置元素属性,attr是a ...
- JQuery中bind和unbind函数与onclick绑定事件区分
JQuery中bind和unbind函数转载: https://blog.csdn.net/liucheng417/article/details/51131982 页面代码: <body& ...
- jquery 中 html与text函数的区别
jquery 中 html与text函数的区别 共同点:它们都能讲函数中的参数渲染到页面中: 异同点: text() 只是简单的讲参数的内容写入到页面中: html() 会根据参数的值,判断是否字体符 ...
- Ajax_04之jQuery中封装的Ajax函数
1.PHP中json_encode编码规则: PHP索引数组编码为JSON:[...] PHP关联数组编码为JSON:{...}2.jQuery中AJAX封装函数之load: ①使用:$('选择器') ...
- JQuery中隐藏/显示事件函数
1.$("button").click(function(){ $("p").hide(); });2.如果您的网站包含许多页面,并且您希望您的 jQuery ...
- Jquery中"$(document).ready(function(){ })"函数的使用详解
Jquery是优秀的Javascrīpt框架,$是jquery库的申明,它很不稳定(我就常遇上),换一种稳定的写法jQuery.noConflict(); jQuery(document).ready ...
- jquery中filter()和find()函数区别
通常把这两个函数,filter()函数和find()函数称为筛选器. 下面的例子分别使用filter函数和find函数对一组列表进行筛选操作. 一组列表: <li>1</li> ...
- jquery 中的几个函数方法
1.$.map(data,function(item,index){return XXX})处理每一个元素的函数.第一个参数是数组元素,第二个参数是该元素的索引值. 遍历data数组中的每个元素,并按 ...
- 关于jQuery中toggle参数callback函数提前执行问题
通过 jQuery,您可以使用 toggle() 方法来切换 hide() 和 show() 方法. 显示被隐藏的元素,并隐藏已显示的元素: $(selector).toggle(speed,call ...
随机推荐
- 进程之间的通信(multiprocess.Queue)
一.进程间通信 进程之间的数据是相互隔离的,例如 from multiprocessing import Process def task(): global n # 声明全局变量 n = 999 p ...
- "image watch" for QtCreator
Image Watch Image Watch 是Visual Studio的一个插件,用来在C++ 调试时显示内存中的位图图像.可以直观的看到图像的变化而不用添加额外的显示代码.其内建了对OpenC ...
- qt work
auto folder1="./.mm"; QDir *folder = new QDir; bool exist = folder->exists(folder1); if ...
- 判断N是否是质数,为什么判断到根号N就可以了
N=根号N*根号NN的因数除了根号N,其他都是成对存在的, 且必定一个大于根号N一个小于根号N假设N不是质数,有个因数大于根号N(不是N本身) 则N必定有一个与之对应的小于根号N的因数也就是说,如果2 ...
- 根据当前设备的宽度,动态计算出rem的换算比例,实现页面中元素的等比缩放
~function anonymous(window){ //根据当前设备的宽度,动态计算出rem的换算比例,实现页面中元素的等比缩放 let computedREM = function compu ...
- 【linux】less 命令详解
转自:https://www.cnblogs.com/GNblog/p/6932252.html less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极 ...
- Django常用 命令
Django常用 命令: 安装: pip install django 指定版本 pip3 install django==2.0 新建项目: django-admin.py startproject ...
- hdfs中数据迁移
1.hdfs集群间数据迁移 hadoop distcp hdfs://192.128.112.66:8020/user/hive/warehouse/data.db/dwi_xxxx_d /user ...
- 12-SpringCloud GateWay
GateWay和Zuul说明 Zuul开发人员窝里斗,实属明日黄花 重点关注Gate Way GateWay是什么 上一代zuul 1.x官网 Gateway官网 概述 Cloud全家桶中有个很重要的 ...
- 源码解析.Net中DependencyInjection的实现
前言 笔者的这篇文章和上篇文章思路一样,不注重依赖注入的使用方法,更加注重源码的实现,我尽量的表达清楚内容,让读者能够真正的学到东西.如果有不太清楚依赖注入是什么或怎么在.Net项目中使用的话,请点击 ...