// 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中的几个函数的更多相关文章

  1. jquery中attr()与prop()函数用法实例详解(附用法区别)

    本文实例讲述了jQuery中attr()与prop()函数用法.分享给大家供大家参考,具体如下: 一.jQuery的attr()方法 jquery中用attr()方法来获取和设置元素属性,attr是a ...

  2. JQuery中bind和unbind函数与onclick绑定事件区分

    JQuery中bind和unbind函数转载:   https://blog.csdn.net/liucheng417/article/details/51131982 页面代码: <body& ...

  3. jquery 中 html与text函数的区别

    jquery 中 html与text函数的区别 共同点:它们都能讲函数中的参数渲染到页面中: 异同点: text() 只是简单的讲参数的内容写入到页面中: html() 会根据参数的值,判断是否字体符 ...

  4. Ajax_04之jQuery中封装的Ajax函数

    1.PHP中json_encode编码规则: PHP索引数组编码为JSON:[...] PHP关联数组编码为JSON:{...}2.jQuery中AJAX封装函数之load: ①使用:$('选择器') ...

  5. JQuery中隐藏/显示事件函数

    1.$("button").click(function(){ $("p").hide(); });2.如果您的网站包含许多页面,并且您希望您的 jQuery ...

  6. Jquery中"$(document).ready(function(){ })"函数的使用详解

    Jquery是优秀的Javascrīpt框架,$是jquery库的申明,它很不稳定(我就常遇上),换一种稳定的写法jQuery.noConflict(); jQuery(document).ready ...

  7. jquery中filter()和find()函数区别

    通常把这两个函数,filter()函数和find()函数称为筛选器. 下面的例子分别使用filter函数和find函数对一组列表进行筛选操作. 一组列表: <li>1</li> ...

  8. jquery 中的几个函数方法

    1.$.map(data,function(item,index){return XXX})处理每一个元素的函数.第一个参数是数组元素,第二个参数是该元素的索引值. 遍历data数组中的每个元素,并按 ...

  9. 关于jQuery中toggle参数callback函数提前执行问题

    通过 jQuery,您可以使用 toggle() 方法来切换 hide() 和 show() 方法. 显示被隐藏的元素,并隐藏已显示的元素: $(selector).toggle(speed,call ...

随机推荐

  1. Elasticsearch之深入理解

    @ 目录 ES应用场景 ES应用场景举例 应用场景思考 ES和其他数据库对比 ES架构 Gateway Lucene 数据处理 发现机制与脚本 Transport REST full API ES中集 ...

  2. F与Q查询 事务 choices参数

    F与Q查询 F查询 当我们需要将两个字段对应的数据进行比较时就需要用到F查询. select * from book where sold > stock 1.例如需要将售出部分数据和库存数据进 ...

  3. noip15

    童话故事专场 T1 首先,dead line 是一条直线,而不是线段.考试的时候一直以为是线段,那么横竖共有n+m条,考虑斜着的,斜着的交点为有穷的,则需要满足斜率不同,那么只需要统计一边的,再乘2就 ...

  4. qt work

    auto folder1="./.mm"; QDir *folder = new QDir; bool exist = folder->exists(folder1); if ...

  5. MVVMLight学习笔记(三)---数据双向绑定

    一.概述 本文与其说是MVVMLight框架的学习,不如说是温故一下数据的双向绑定. 二.Demo 建立好MVVMLight框架后的Wpf工程后,建立一个Model.Model.View以及ViewM ...

  6. mysql基础操作(四):简单多表查询

    -- 创建部门 (主表) create table dept( id int primary key auto_increment, name varchar(20) ); -- 创建员工 (副表) ...

  7. rabbitMq队列长度限制

    x-max-length:队列最大容纳消息条数 大于设置条数的时候会把,消息队列头部(先进入消息)的消息移除 x-max-length-bytes:队列最大容量消息内存容量服务端限流内存控制流量:40 ...

  8. windows下mysql5.7.17配置

    1.官网下载mysql5.7.17 64位 https://dev.mysql.com/downloads/mysql/ 2.安装完解压到E盘主目录下,改文件名为mysql 3.配置环境变量 我的电脑 ...

  9. 关于python使用的那些事儿

    时间:2019-04-11 整理:PangYuaner 标题:Python获取并输出当前日期时间 地址:https://www.cnblogs.com/kerwinC/p/5760811.html 实 ...

  10. 程序挂了之后别再跟我说让我帮你重启啦! 让supervisor帮你搞定...

    目录 有啥用? 安装 生成配置文件 启动supervisor 自定义配置文件 控制命令 求关注啦 有啥用? 很多我们项目排期进入联调.测试阶段,如果QA同学是直接跟你要一个后端环境的话,那简单点大概率 ...