替代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 ...
随机推荐
- Thread类中yield方法
Yield方法可以暂停当前正在执行的线程对象,让其他有相同优先级的线程执行.它是一个静态方法而且只保证当前线程放弃CPU占用而不能保证其它线程一定能占用CPU,执行yield()的线程有可能在进入到暂 ...
- idea打断点后发现被标记的断点处那一行整行被标记了其他颜色,前面没有断点标识的红点
问题如下: 最后发现有两种解决办法吧,直接走起! 第一种方法: 在View====>Active Editor====>Show Gutter Icons,勾选此选项,发现小红点出来了: ...
- C++ 中的User a, User b=a 和User a, User b, b=a的区别
#include <iostream>using namespace std;class User{ public: int age; int number; User() { cout ...
- Inject-APC(Ring0)
1 #include "stdafx.h" 2 #include <iostream> 3 #include <Windows.h> 4 #include ...
- YARN的工作过程
yarn的工作执行流程图 1.用户向YARN中提交应用程序 2.ResourceManager为该应用程序找到一个可用的NodeManager 并分配一个Container,然后在这个Containe ...
- ubuntu下安装teamiewer
下载地址: https://download.teamviewer.com/download/linux/teamviewer_amd64.deb 如果无法下载,则在https://www.teamv ...
- 关闭Redis服务
方式1: 方式2:
- 20210811 Dove 打扑克,Cicada 与排序,Cicada 拿衣服
考场 开考感觉 T3 比较可做.T1 看上去不难但毫无思路. 先想了 25min T3,想到一个确定左端点,二分最长的右端点,甚至想到了用猫树维护区间 or and...上厕所回来发现假了,没有单调性 ...
- noip模拟39
\(\color{white}{\mathbb{百般红紫博众爱,正是芳菲斗艳时,名之以:牡丹}}\) %%% szs巨佬AK \(t1\).\(t4\) 都会做,剩下两道好像都不太会,再次扫描到知识盲 ...
- 两种方式配置vue全局方法
目录 1,前言 2,第一种方式 3,第二种方式 1,前言 在Vue项目开发中,肯定会有这样一个场景:在不同的组件页面用到同样的方法,比如格式化时间,文件下载,对象深拷贝,返回数据类型,复制文本等等.这 ...