替代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 ...
随机推荐
- 一文搞懂RPC原理
RPC原理解析 什么是RPC RPC(Remote Procedure Call Protocol)--远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议.R ...
- C# 多线程刷新UI
2.利用委托调用--最常见的办法(仅WinForm有效) using System; using System.Threading; using System.Windows.Forms; nam ...
- 【springboot】集成swagger
1.简介 本章介绍 SpringBoot2.1.9 集成 Swagger2 生成在线的API接口文档. 2. pom依赖: 通过对比了swagger的几个版本,发现还是2.6.1问题最少 <!- ...
- vsftpd - FTP 服务器安装
由于要将本地程序上传至云服务器中,所以需要给云服务器端安装ftp服务器.记录一下ftp的安装过程,以便以后使用.服务器端所用系统为Ubuntu16.04. 1. 安装ftp服务器, apt-get i ...
- 由struts2中配置使用servlet引发的思考和复习
Struts2拦截器到底拦截了什么? 关于struts2中的拦截器,首先再次理解其实只能过滤其中访问的action的映射!再者,因为struts中的action其实就是起到替代servlet作用的,所 ...
- java 方法参数的执行顺序
java方法的参数的执行顺序是从左到右还是从右到左呢? 写出一下测试程序: 1 import java.util.*; 2 import java.io.*; 3 public class Test ...
- Python3-sqlalchemy-orm 创建关联表带外键并查询数据
#-*-coding:utf-8-*- #__author__ = "logan.xu" import sqlalchemy from sqlalchemy import crea ...
- centos7 查看端口占用情况
2021-08-02 1. 查看端口占用情况 # 查看 8088 端口占用情况 lsof -i tcp:8088 # 若提示没有 lsof 命令, yum 安装一下 yum -y install ls ...
- Blazor 组件库开发指南
翻译自 Waqas Anwar 2021年5月21日的文章 <A Developer's Guide To Blazor Component Libraries> [1] Blazor 的 ...
- Mybatis(一)——HelloWorld
本人的博客一向保持"傻瓜式"的风格. 循序渐进学Mybatis,先konw how,再konw why.先整体,再细节! 本文不讲难懂的概念,先通过一个案例,希望读者跟着本文一步一 ...