是否了解jquery 自定义事件件.jquery里的fire函数是什么意思,什么时候用

输入关键字或相关内容进行搜索
侧边栏li的tap事件,点击时出发主页的ckeck事件,但是index页面加载了,事件没有触发。其实我想要的效果是,点击侧边栏的li元素时,(侧边栏就是在主页加的),首先触发主页的一个函数,这个函数里先关掉侧边栏然后,主页进行加载刚才侧边栏点击事件传递回来的页面信息。下面是侧边栏的代码:
mui.plusReady(function() {
mui('ul').on('tap', 'li', function() {
var detailPage =
var links = this.getAttribute('id');
//alert(links);
//获得详情页面
if (!detailPage) {
detailPage = plus.webview.getWebviewById('HBuilder');
//alert(detailPage.getURL())
//触发详情页面的newsId事件
//mui.fire(detailPage, 'newsId', {
//id: links
mui.fire(detailPage, 'check', {
//打开详情页面
\n下面是主页的代码:
window.addEventListener('check',function(event){
//获得事件参数
alert(event.detail.id)});并没有触发。直接加载了index页面。
你用js代码打开index.html,当然会遵循你的意愿了,删除如下代码:mui.openWindow({
id: 'index.html',
url:&index.html&
我也遇到这个情况了, 文档里有mui.openWindow啊。
我也遇到了这个问题了,请问楼主解决了吗?
我的情景是:1.首先进入app,默认进入到首页,并且预加载b和c页面;
2.在首页里面进行操作,发现没有登录,跳转到登录页;
3.登录成功后,调用mui.fire取到b页面,并自定义事件;
4.b页面里面的自定义事件并没有执行。
我的demo如下:1.首先在首页进行一些操作,不满足条件,跳转到登录页面:
2. 在登录页面,登录成功后:
mui.ajax(loginUrl, {
username: account,
password: mui.encryption(pwd),
dataType: 'json', //服务器返回json格式数据
type: 'post', //HTTP请求类型
timeout: 20000, //超时时间设置为10秒;
success: function(data) {
app_debug && mui.log(TAG, JSON.stringify(data));
plus.nativeUI.toast(data.message);
if (data.status == 1) { // 登录成功
// 及时更新“我的”界面元素
alert(&调用自定义事件之前&);
var userPage = plus.webview.getWebviewById(&user&);
mui.fire(userPage, 'updateViews');
plus.webview.currentWebview().hide();
error: function(xhr, type, errorThrown) {
//异常处理;
console.log(xhr + type + errorThrown);
plus.nativeUI.toast(&网络出现异常,请检查网络!&);
\n然后在user页面的代码是这样的://添加newId自定义事件监听
window.addEventListener('updateViews', function(event) {
alert(&调用了自定义插件&);
mui.log(&user&, &调用了自定义插件&);
reloadPage();
mui.log(&user&, &调用了自定义插件&);
\n效果如下:
只在登录页面弹出了alert,user页面并没有执行监听事件:
要回复问题请先或
浏览: 1199
关注: 5 人WEB云端 / 研究所
开源项目 (库 / 框架)
实验项目 Lab
系列 Series
最新留言 Messages
最新文章 Latest Blogs
记录下 CSS 常用布局的解决方案,对于需要高兼容性的布局可以使用基于 posistion 属性的布局,table 布局方式也经常用到。还有基于margin 和 float 的传统布局方式、利用 BFC 的布局方式和 CSS3 的弹性布局 flex 的布局方式。具体选用哪一种可以依据实际业务加以变通和修改。
在职业生涯的发展中,我们不仅会涉及到编码、做技术,也会和团队建设与项目规划打交道。一个项目不是简单的打开编辑器写代码,一个好的项目一定是在开始之前就进行了严格的项目规划与团队内部建设。今天我们要罗列一下前端项目初期阶段所需要进行的工作。
趁着博主这几天准备面试,在这里总结一下 WEB 前端 HTML 部分的常见问题,同时这些问题也是对一些基础的技术概念和思想的理解。对这些基本知识的掌握程度和深度决定了你的技术层级。高级工程师是必须掌握本文列出的这些知识的,资深工程师则要对这些基本概念的纵向深度进行挖掘,问题解答全部原创,转载请注明来源。
这里总结一下 WEB 前端面试 JS 部分的常见问题,同时这些问题也是对一些基础的技术概念和思想的理解。对这些基本知识的掌握程度和深度决定了你的技术层级。高级工程师是必须掌握本文列出的这些知识的,资深工程师则要对这些基本概念的纵向深度进行挖掘,问题解答全部原创,转载请注明来源。
趁着博主这几天准备面试,在这里总结一下 WEB 前端 CSS 部分的常见知识点与问题,同时这些问题也是对一些基础的技术概念和思想的理解。对这些基本知识的掌握程度和深度决定了你的技术层级。高级工程师是必须掌握本文列出的这些知识的,资深工程师则要对这些基本概念的纵向深度进行挖掘,问题解答全部原创,转载请注明来源。
这里总结一下 WEB 前端面试常见问题(未分类),同时这些问题也是对一些基础的技术概念和思想的理解。对这些基本知识的掌握程度和深度决定了你的技术层级。高级工程师是必须掌握本文列出的这些知识的,资深工程师则要对这些基本概念的纵向深度进行挖掘,问题解答全部原创,转载请注明来源。
本文分为上下两篇,主要介绍算法中常用的七种&排序&算法。这七种算法主要是冒泡排序、快速排序、归并排序、选择排序、堆排序、插入排序和希尔排序。算法问题大部分主要集中在&排序&和&查找&两部分,只有在对基础的排序算法有了深刻了解的基础上,我们才能为进一步学习动态规划等高级算法思路打下基础。
LeetCode每日一题系列。本文算法题目:给出一个二叉树和其根节点,给出该二叉树的最大深度(指树中最长路径所经过的所有节点数量)。建议先看原题的链接自己做一下,然后再参考本文给出的分析与解答进行总结。【Tree】 【Depth-first Search】
LeetCode每日一题系列。本文算法题目:给出一个字符串,该字符串包含大写字母,小写字母和空格,请编写程序给出最后一个单词(不包含空格,只包含字母)的长度。建议先看原题的链接自己做一下,然后再参考本文给出的分析与解答进行总结。【String】
经过了几周时间的思考和实践,Zoomage.js 的正式版本(V1.0.0)今天终于发布了。在这个正式版本中,我们加入了对图片的 平移、旋转、缩放 三种手势动作的完全支持。同时对缩放的&边界缓动&效果进行了调整,使整个缩放动作更加缓和,自然和流畅。基于两套不同的动作处理方案为浏览器兼容性带来了保障。
文章日期索引 Date Index
文章类别索引 Type Index
文章主体 Detail
CSS 常用布局解决方案
记录下 CSS 常用布局的解决方案,对于需要高兼容性的布局可以使用基于 posistion 属性的布局,table 布局方式也经常用到。还有基于margin 和 float 的传统布局方式、利用 BFC 的布局方式和 CSS3 的弹性布局 flex 的布局方式。具体选用哪一种可以依据实际业务加以变通和修改。
1、水平居中布局
inline-block + text-align
优点:兼容性好;缺点:子容器的内容居中需要额外的 text-align 属性;
table + margin
优点:兼容性好,只用关心子元素的样式属性;解释:display:table 属性使得元素具有同 inline-block 一样的特性,容器大小取决于内容大小,并且具有宽高;
absoulte + transform
缺点:兼容性问题;
flex + justify-content
优点:只需要对父容器进行设置;缺点:兼容性问题;
2、垂直居中布局
table-cell + vertical-align
优点:兼容性好;解释:vertical-align 可以作用于 inline、inline-block、table-cell 元素上;
absolute + transform
缺点:兼容性问题;
flex + align-items
缺点:兼容性问题;
3、一列定宽,一列自适应(其他类似的类型都可以由此衍生)
float + margin
优点:兼容性较好;
float + margin + (fix) 解决IE6下的3像素问题
优点:兼容性较好;解释:防止子元素清除浮动带来的问题,使用 position: 来提高元素层级;
float + overflow
缺点:兼容性问题;解释:利用 BFC 模式使自适应部分不受 float 的影响;
缺点:代码量较多;解释:display: 默认大小为内容大小;display:table-cell 不能设置 margin 属性;table-layout: 可以加速渲染,布局优先,固定表格布局中,水平布局仅取决于表格宽度、列宽度、表格边框宽度、单元格间距,而与单元格的内容无关。自动表格布局中,列的宽度是由列单元格中没有折行的最宽的内容设定的。;
缺点:性能一般;解释:flex 一般用于小范围布局,防止出现性能问题;
4、多列等分布局
优点:耦合性交大;解释:使用&box-sizing:border- 让浏览器以 IE 的怪异模式解析&盒模型&,即元素尺寸为 &content + padding + border& 三者的和;
优点:结构跟样式解耦;
缺点:兼容性问题;
缺点:兼容性问题;
作者 : YHSPY
类别 : WEB前端 CSS
暂未支持,改日添加
{ 欢迎关注微信公众平台体验更多功能 }
一语类别索引 Type Index
一语浏览 Detail
前端静态资源管理系统 = 资源表 + 资源加载框架;
资源表是一份数据文件(比如JSON),是项目中所有静态资源(主要是JS和CSS)的构建信息记录,通过构建工具扫描项目源码生成,是一种k-v结构的数据,以每个资源的id为key,记录了资源的类别、部署路径、依赖关系、打包合并等内容;
对于静态资源缓存更新的问题,目前来说最优方案就是“基于文件内容的hash版本冗余机制”,
项目源码:
&script type="text/javascript" src="a.js"&&/script&
发布源码:
&script type="text/javascript" src="a_8244e91.js"&&/script&
优点:不存在间隙问题、遇到问题只需要回滚页面、缓存利用率大增;
Facebook 的 BigPipe 优化:
先输出页面整体布局,然后逐步输出脚本块,一边输出一边执行,将内容渲染回页面布局中。这样可以让服务端的运算、网络传输和浏览器端的渲染变成并行。BigPipe最主要解决的问题是服务端的运算时间,当服务端的运算时间大于300~500ms时才能体现出优势。当服务端响应非常快(小于100ms),BigPipe退化为BigRender。
BigRender 优化:
BigRender 顾名思义是对大页面渲染的优化。BigRender 的原理是通过某种方式,将首屏不需要的 HTML 代码先存放起来。渲染好首屏后,再将存储好的 HTML 代码逐步渲染出来。
Facebook 的 Quickling 优化:
Quickling 将所有的用户点击访问自动地转变成AJAX调用,避免了大量的服务器端重复计算和客户端的重复渲染。让浏览器不需要卸载前一个页面的资源,加载下一个页面的时候,也不需要下一个页面的资源。
配置 Last-Modified / Etag / Expire 混合缓存策略:
首次请求一个页面时,服务器会返回一个 ETag 字段,该字段会在服务器返回内容发生变化时而改变。接下来的每次请求中,会携带一个 If-None-Match 字段,该字段的值即为上次响应头中的 ETag 的值。若服务器的 ETag 没有改变,则请求返回 304(Not Modified),返回返回 200 并携带一个新的的 ETag 值。ETag 缓存功能可以在 Apache / Nginx 服务器中进行配置。
Expire 是 HttpHeader 中代表资源的过期时间,由服务器段设置。如果带有 Expire,则在 Expire 过期前不会发生 Http 请求,直接从缓存中读取。用户强制 F5 例外。
Last-Modified 是 HttpHeader 中的资源的最后修改时间,如果带有 Last-Modified,下一次发送 Http 请求时,将会发生带 If-modified-since 的 HttpHeader。如果没有过期,将会收到 304 的响应,从缓存中读取。
Last-Modified 和 Expire 经常一起使用,因为 Expire 可以让浏览器完全不发起 Http 请求,而当浏览器强制 F5 的时候又有 Last-Modified 控制,这样就很好的达到了浏览器段缓存的效果。Etag 和 Expire 一起使用时,先判断 Expire,如果已经过期,再发起 Http 请求,如果 Etag 也过期,则返回 200 响应。如果 Etag 没有过期则返回 304 响应。
Last-Modified / Etag / Expire 三个同时使用时。先判断 Expire 是否需要发送请求,若发送 Http 请求,服务器先判断 Last-Modified,再判断 Etag,必须两者都没有过期,才能返回 304 响应。
Object.create polyfill
function inherit(p) {
if(p == null) throw TypeError();
if(Object.create)
return Object.create(p);
if(t !== "object" && t !== "function")
throw TypeError();
function f() {};
f.prototype =
return new f();
第一字节返回时间(TTFB)是影响搜索排名的一个因素。
延迟可能是网站请求的一个大资源造成的, 需要解决的问题是你的服务器和浏览者的地理距离问题。延迟受距离和光速影响; 仅仅靠一个高速网络连接解决不了问题. 内容分发网络(CDNs) 通过把你的静态资源(图片, CSS, JS等等)拷贝并存放到全世界的各个服务器上来降低浏览网页的延迟.
静态资源的TTFB就是请求和响应在浏览器和服务器之间的网络上走一个来回的时间。
DOMcontentLoaded是现代浏览器才支持的一个事件,IE从IE9开始才支持这个事件。DOMContentLoaded会在浏览器接收到服务器传过来的HTML文档,整个页面DOM结构加载完成并且所有行内脚本和外部脚本执行完成后触发 (通过上面异步脚本的例子可以看出,ScriptDOM异步加载脚本不会阻塞DOMContentLoaded,或者说DOMContentLoaded不需要等待ScriptDOM执行就可以出发) ,它跟onload事件的区别是,DOMContentLoaded事件不需要等待图片、iframe和样式表等资源加载完成就会触发,而onload事件需要等待整个页面都加载完成包括各种资源才会触发。所以对于我们来说DOMContentLoaded是一个更有用的事件,因为只要DOM结构加载完成,我们就可以通过JS来操作页面上的DOM节点。
JS性能优化:缩短原型链,压缩原型链高度,加速属性和方法的查找速度;使用事件代理代替传统的节点绑定;
DOM性能优化:减少对DOM的直接操作,包括查找,插入,删除等操作;减少页面重绘;
// 大多数情况下, createElement 要比 innerHTML 更快;
var start = new Date().getTime() ;
var test = document.getElementById("test") ;
for(var i = 0 ; i < 1000 ; i ++){
test.innerHTML += "" ;
console.log("innerHTML:" + (new Date().getTime() - start)) ;
document.getElementById("test").innerHTML = "" ;
start = new Date().getTime() ;
for(var i = 0 ; i < 1000 ; i ++){
test.appendChild(document.createElement("div")) ;
console.log("createElement:" + (new Date().getTime() - start)) ;
请求数量: 合并脚本和样式表,CSS 雪碧图,拆分初始化负载,划分主域;
请求带宽: 开启GZip,精简JavaScript,移除重复脚本,图像优化;
缓存利用: 使用CDN,使用外部JavaScript和CSS,添加Expires头,减少DNS查找,配置ETag,使AjaX可缓存;
页面结构: 将样式表放在顶部,将脚本放在底部,尽早刷新文档的输出;
代码校验: 避免CSS表达式,避免重定向;
instanceof运算符 polyfill:
function instance_of(L, R) {
//L 表示左表达式,R 表示右表达式
var O = R.
// 取 R 的显示原型
L = L.__proto__;
// 取 L 的隐式原型
while (true) {
if (L === null)
if (O === L)
// 这里重点:当 O 严格等于 L 时,返回 true
L = L.__proto__;
JS原型链重要知识点
1、Javascript查找属性或方法的顺序是先查找对象本身然后查找对象的原型链,并不会针对单一的函数而查找函数的 prototype 属性。
var Foo = function(name) {}
Foo.prototype.print = function(){
console.log(arguments.callee.caller);
// Foo.print();
Foo.prototype.print();
2、__proto__ 隐式原型 :
'_proto__ point to the value of its constructor’s "prototype"'.
// 对象字面量模式
var foo = {
name: 'alice',
gender: 'female'
// var foo = new Object();
// foo.name = 'alice';
// foo.gender = 'female';
foo.__proto__ === Object. // true
// 构造函数模式
var Foo = function(){}
var foo = new Foo();
foo.__proto__ === Foo. // true
foo.__proto__ === foo.constructor. // true
foo.constructor === F // true
Foo.prototype.constructor === F // true
// Object.create 模式
var Foo = {
name: 'alice',
sex: 'female'
var foo = Object.create(Foo);
foo.__proto__ === F // true
Object.__proto__ === Function. // true
2、原型链查找顺序:
沿着 __proto__ 由外向内逐层查找。
NodeJS调试模式:
命令 node --debug-brk app.js 会强制在第一行添加断点,默认的端口是5858,也可以像这样修改: node --debug-brk[=3000] app.js。在另一个命令行窗口打开 node-inspector 之后,访问 http://127.0.0.1:8080/debug?port=5858 进行调试。
JQ事件委托模式的知识点:
$("#panel").delegate("div", "click", function(e){
if(e.target.innerHTML == "Show Spoiler") {
e.stopPropagation();
$(e.target).next().slideToggle();
JS中的事件冒泡只是对发生的“事件”向父元素传递而已,而发生事件的 target 属性是不变的。而在JQ的代理方法中,只要符合特定事件以及元素类型的事件都会被捕捉,而每次捕捉的 target 属性均为第一次事件发生时的目标元素。
在JS中打印当前代码行调用堆栈的两种方法:
1、在当前代码行生成一个 Error 对象,利用 Error 对象的 stack 属性来查看当前行调用堆栈;
function trace() {
var e = new Error('trace');
var stack = e.stack.replace(/^[^\(]+?[\n$]/gm, '')
.replace(/^\s+at\s+/gm, '')
.replace(/^Object.\s*\(/gm, '{anonymous}()@')
.split('\n');
console.log(stack);
2、直接使用 console.trace 打印堆栈信息;
Gulp / Grunt 是一种工具,能够优化前端工作流程。比如自动刷新页面、Combo、压缩各种静态资源、编译 Less / Sass、构建雪碧图等。简单来说,就是使用Gulp / Grunt,配置你需要的插件,就可以把以前需要手工做的事情自动化了。
说到 Browserify / Webpack / Seajs / Requirejs。这四个都是 JS 模块化解决方案。其中 Seajs / Requirejs 是一种类型,Browserify / Webpack 是另一种类型。
Seajs / Require: 是一种在线"编译"模块的方案,相当于在页面上加载一个 CMD / AMD 解释器。这样浏览器就认识了 define、exports、module 这些东西。也就实现了模块化。
Browserify / Webpack: 是一个预编译模块的方案,相比于上面两种方案,这个方案更加智能。以 Webpack 为例,首先,它是预编译的,不需要在浏览器中加载解释器。另外,你在本地直接写 JS,不管是 AMD / CMD / ES6 风格的模块化,它都能认识,并且编译成浏览器认识的 JS。
这样就知道,Gulp 是一个自动化构建工具,Webpack 等是模块化解决方案。Gulp 也可以配置 Seajs、Requirejs 甚至 Webpack 的插件。
X-Requested-With: XMLHttpRequest 是 JQ 发送 Ajax 请求时专门添加的头部,“No 'Access-Control-Allow-Origin' header is present on the requested resource.” 的错误是由于浏览的限制导致的,与服务器无关。
代码库列表 CD Catelog
代码库 Code Depot
Leetcode - 169.Majority Element HashMap基础解法
public static int majorityElement(int[] nums) {
if (nums.length == 0)
// 如果数组长度为0则返回-1
return -1;
int arrLen = nums.
Map&Integer, Integer& map = new HashMap();
for (int i = 0;i
arrLen / 2) {
// 如果满足条件则返回该元素
return nums[i];
map.put(nums[i], currentVal + 1);
// 否则对应元素值加一
return -1;
使用方法:Eclipse新建工程,直接复制到主类里,通过类名静态调用即可。
代码说明:本段代码为Leetcode题目&169.Majority Element&的实现代码,算法类代码建议先做题,再参考。题目详情请参考文章《》。
Leetcode - 219.Contains Duplicate II 窗口检测解法代码片段
public static boolean containsDuplicateOptimizeFurther(int[] nums) {
Set&Integer& set = new HashSet&Integer&();
int start = 0, end = 0;
// 定义窗口的首尾指针
for(int i = 0; i
// 保持首尾指针距离不大于k
set.remove(nums[start]);
//如果大于则移除首指针元素
// 移除后首指针后移
使用方法:Eclipse新建工程,直接复制到主类里,通过类名静态调用即可。
代码说明:本段代码为Leetcode题目&219.Contains Duplicate II&的实现代码,算法类代码建议先做题,再参考。题目详情请参考文章《》。
Leetcode - 283.Move Zeroes之基础循环解法代码片段
public static void moveZeroes(int[] nums) {
int arrLen = nums.
int zeroCount = 0, flag = 0;
// 声明两个变量,一个用来保存数组中0的个数,一个用来标志移动的0的个数,用于控制循环
for (int i = 0; i < arrL i ++) {
// 获取数组中0的个数
if(nums[i] == 0) {
zeroCount ++;
for (int i = 0; i < arrL i ++) {
// 循环遍历数组
while (nums[i] == 0) {
// 防止连续的0,只有当移动之后当前位置不为0,才向下移动
for (int k = k < arrLen - 1; k ++) {
// 注意此处的k是代表索引位置,并不是循环次数
nums[k] = nums[k + 1];
// 移除找到的0,并依次将元素向前移动(填补移除的0的位置)
nums[arrLen - 1] = 0;
// 数组末尾值置0
if(zeroCount == flag) {
// 当移除0的次数与0的个数相等时结束循环
使用方法:Eclipse新建工程,直接复制到主类里,通过类名静态调用即可。
代码说明:本段代码为Leetcode题目&Move Zeroes&的实现代码,算法类代码建议先做题,再参考。题目详情请参考文章《》。
Leetcode - 1.Two Sum之优化的HashMap代码片段
public static int[] twoSumFurtherOptimize(int[] nums, int target) {
int numsLength = nums.
int[] resultArr = new int[] {};
Map&Integer, Integer& map = new HashMap();
for (int i = 0; i < numsL i++)
int search = target - nums[i];
if (map.containsKey(search) && map.get(search) != i)
return new int[] {map.get(search), i};
map.put(nums[i], i);
// 向HashSet插入值
return resultA
使用方法:Eclipse新建工程,直接复制到主类里,通过类名静态调用即可。
代码说明:本段代码为Leetcode题目&Two Sum&的实现代码,算法类代码建议先做题,再参考。题目详情请参考文章《》。
Leetcode - 1.Two Sum之HashMap代码片段
public static int[] twoSumOptimize(int[] nums, int target) {
int numsLength = nums.
Map&Integer, Integer& map = new HashMap();
for (int i = 0; i< numsL i ++)
// 为HashMap赋值,重复值只会取最后一次出现的,重复值无用
map.put(nums[i], i);
for (int i = 0; i< numsL i ++)
// 开始遍历查询
int search = target - nums[i];
// 得到与当前值的匹配值
if (map.containsKey(search) && map.get(search) != i)
// 查询匹配值是否存在于HashMap中,并且匹配值不能是自己
return new int[] {i, map.get(search)};
return new int[] {};
使用方法:Eclipse新建工程,直接复制到主类里,通过类名静态调用即可。
代码说明:本段代码为Leetcode题目&Two Sum&的实现代码,算法类代码建议先做题,再参考。题目详情请参考文章《》。
关注项目 Focus
项目简介 Introduce
基于云的实时交流
基于板块和内容的结构化信息整合
基于Chrome插件的原生态环境
“Stargate 星门”
一款来自云端的IT技术交流社区插件
一个浏览器
- 即将开放下载 -
开源项目(库 / 框架)
实验项目 Lab
系列 Series
最新留言 Messages
关于 About
是一个分享IT技术与资讯的博客网站,网站所有架构源码均由本人编写,文章均为本人与其他 Co-Editor 原创,未经允许请不要擅自转载或使用。网站平时主要发布一些IT技术类文章,因个人技术水平不同,文章中难免出现技术或逻辑错误敬请谅解,欢迎留言交流与指正!本站文章中的所有言论均代表我及本站的 Co-Editor 的个人观点,跟其他组织或个人无关;文章评论及留言均与本站和本人无关。
网名:YHSPY / 真名:-航生日:1993年09月籍贯:吉林长春 / 现居地:上海感情状况:恋爱 / 哈尼:-涵邮箱:自己:早睡早起,天天看书,随时记录。个人技能:
编程:随性。
钢琴:《Summer》、《Always With Me》
健身:各种器械,不喜欢跑步。
代码库CD:这里共享着大量的独立功能代码片段,每一个片段都有其特定的功能说明与使用方法,只需要按照使用方法说明将代码直接复制到您的项目中即可使用。同时我们还提供了代码片段的搜索功能,您可以根据编程语言与功能需求来快速搜索实现改功能的代码片段。在快速构建应用的同时,通过阅读代码,也能快速地提高您的技术水平。
即时TALK:“StarGate 星门” 是一款基于Chrome原生环境开发的浏览器插件,我们将实时云技术与内容聚合绑定在一起,构建了基于浏览器的在线实时IT交流社区平台,欢迎使用与下载。
版权:本网站涉及到的所有源代码与资源(包括图片及资源文件等)以及文章均为原创,请不要私自使用,如需转载请附上来源。(网站ICP备案号:吉ICP备号-2)商务洽谈 / 友情链接 请联系邮箱:
创作,采用
进行许可。
众筹平台 Raise Funds
众筹平台:
如果您觉得本网站对您的日常工作与生活有所帮助,您可以通过微薄的打赏来帮助我们进行更好的发展。“支付宝” 扫描左侧的二维码即可为网站的发展捐出你的一份力。
众筹声明:
所有通过众筹平台筹集到的资金将全部用于网站服务器及域名的更新、维护,网站 ECS 、数据库等网站构建资源的购买与升级,网站内容质量的提升等方面上。
友情链接 Links}

我要回帖

更多关于 jquery添加自定义事件 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信