// 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. 005 媒体访问控制(MAC,Media Access Control)

    一,MAC MAC是媒体访问控制器.以太网MAC由IEEE-802.3以太网标准定义.它实现了数据链路层.最新的MAC同时支持10/100/1000Mbps速率.通常情况下,它实现MII/GMII/R ...

  2. noip33

    T1 第一个猎人死的轮数等于在1号猎人之前死的猎人数+1,如果当前这个人没死,那么他死在一号猎人之前的概率为 \(\frac{w_{i}}{w_{1}+w_{i}}\),因为每死一个就会造成1的贡献, ...

  3. SSM自学笔记(五)

    10.MyBatis入门操作 1.MyBatis的简介 1.1 原始jdbc操作(查询数据) 1.2 原始jdbc操作(插入数据) ##### 1.3 **原始**jdbc操作的分析 原始jdbc开发 ...

  4. SpringBoot集成Druid

    maven <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-b ...

  5. lwm2m 协议

    1.DTLS介绍 1.1 DTLS的作用 互联网先驱们最开始在设计互联网协议时主要考虑的是可用性,安全性是没有考虑在其中的,所以传输层的TCP.UDP协议本身都不具备安全性.SSL/TLS协议是基于T ...

  6. C# 二维数组 [,]与[][] 的区别 及特性

    arr[,] 用于声明等长的二维数组 Eg: //声明数组有3行 每行长度相等为2 var s = new int[3, 2] { { 1, 2 }, { 3, 4 }, { 1, 4 } }; 获取 ...

  7. 【springcloud】Eureka 常用配置解析

    转自:https://www.cnblogs.com/zyon/p/11023750.html 1. 配置项解析 1.1 通用配置 # 应用名称,将会显示在Eureka界面的应用名称列 spring. ...

  8. gdb调试用命令与一般调试方法

    示例代码 1 #include <iostream> 2 using namespace std; 3 4 void Print() 5 { 6 cout<<"hel ...

  9. Spark入门:Spark运行架构(Python版)

    此文为个人学习笔记如需系统学习请访问http://dblab.xmu.edu.cn/blog/1709-2/ 基本概念 *  RDD:是弹性分布式数据集(Resilient Distributed ...

  10. jQuery中的属性过滤选择器(四、五):[attribute] 、[attribute=value]、[attribute!=value] 、[attribute^=value] 等

    <!DOCTYPE html> <html> <head> <title>属性过滤选择器</title> <meta http-equ ...