
jquery
文章平均质量分 66
aitangyong
成长最快、最好的方式就是交流和总结!
展开
-
jquery版本升级不兼容的问题:$("input").attr("value")功能发生改变
之前项目中使用的是jquery-1.6.3.js,在这个版本中,如果我们想获取输入框的值,可以使用$("input").attr("value")或者是$("input").val(),这2种方式是等价的。$("#speed").attr("value");$("#speed").val(); 最近到了另一个项目组,使用的是jquery-2.1.1.js,结果发现了问题。我原创 2014-10-29 11:07:36 · 4155 阅读 · 1 评论 -
W3C/JQuery中stopImmediatePropagation和stopPropagation的区别
W3C的DOM-Level-3标准中,event事件对象有stopPropagation和stopImmediatePropagation这2个函数。DOM3中Event标准:http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html。JQuery我用的是2.1.1和1.10.2,也支持原创 2015-01-31 14:02:14 · 2173 阅读 · 0 评论 -
使用jquery的siblings获取某一个元素的所有同辈(兄弟姐妹)元素
假如需要实现如下功能:点击某个按钮的时候,该按钮背景色变成#88b828,其他按钮背景色变成#15b494。这个时候,siblings这个API很有用,也很简单。 $(function(){ $("#contentHolder input[type='but原创 2015-01-25 11:55:45 · 5308 阅读 · 1 评论 -
JQuery入门贴:内容选择器的使用简介
JQuery内容选择器有4种:contains(text)、:empty、:has(selector)、:parent。什么是内容选择器呢?我们知道HTML的元素,可以有文本,也可以含有子元素,还可以同时包含文本和子元素。这些文本和子元素,构成了dom树某个节点的子节点。这里需要注意:如果一个元素的内容只有空白,也算empty。原创 2015-02-15 17:24:56 · 1125 阅读 · 0 评论 -
JQuery/Underscore等javascript框架中noConflict()的使用和实现原理
一般的javascript框架,都是通过向全局对象window中注入自己的属性实现的。比如JQuery向window中添加"$"对象,Underscore向window对象中添加"_"对象。如果在框架加载之前,已经存在这些全局变量呢,会怎么样呢? var $ = "$"; alert($ === "$");//false alert($().jquery);//1.10.2很原创 2015-03-11 17:30:01 · 1809 阅读 · 0 评论 -
CSS/JQuery元素选择器之&&和||,选择器的逻辑操作
使用CSS或JQuery选中元素的时候,很多时候我们需要对条件进行&&或者||操作。JQuery或者CSS中的||操作是很常用的,也很简单,就是通过逗号来分隔的。selector1,selector2,selectorN比如我们想选中div或者span,那么可以通过$("div,span")来选中满足条件的元素。原创 2015-06-27 17:34:55 · 6960 阅读 · 0 评论 -
使用JQuery Deferred对象的then() 解决多个AJAX操作顺序依赖的问题
我们知道deferred.resolve()、deferred.reject()、deferred.notify()可以指定参数值,这个参数会传递给相应状态下的回调函数。如果我们使用的是done()、fail()、progress()注册的回调函数,那么某个状态下的所有回调函数得到的都是相同参数。但是如果我们使用了then()注册回调函数,那么第一回调函数的返回值将作为第二个回调函数的参数,同样的第二个函数的返回值是第三个回调函数的参数。原创 2015-07-26 17:18:12 · 20155 阅读 · 3 评论 -
一个例子看清楚JQuery子元素选择器children()和find()的区别
children()和find()的差别在于:1.children方法获得的仅仅是元素一下级的子元素,即:immediate children2.find方法获得所有下级元素,即:all descendants 3.children方法的参数selector是可选的,用来过滤子元素;但find方法的参数selector方法是必选的。原创 2015-08-13 17:02:44 · 20643 阅读 · 0 评论 -
javascript异步代码的回调地狱以及JQuery.deferred提供的promise解决方案
由于AJAX是异步的,所有依赖AJAX返回结果的代码必需写在AJAX回调函数中。这就不可避免地形成了嵌套,ajax等异步操作越多,嵌套层次就会越深,代码可读性就会越差。Promise对象有3种可能的状态:肯定状态(resolved)、否定状态(rejected)、等待状态(pending)。刚开始创建的Promise对象处于pending状态,只能从pending变成resolved或者是从pending变成rejected状态。可以看到Promise对象其实就是Deferred对象的一部分,Deferre原创 2015-07-22 17:23:28 · 6953 阅读 · 5 评论 -
JQuery.Callbacks系列一:api使用详解
JQuery.Callbacks是jQuery1.7+之后引入的,用来进行函数队列的add、remove、fire、lock等操作,并提供once、memory、unique、stopOnFalse四个option进行一些特殊的控制。既然是新加入的功能,那么就有其特定的使用场景和优势。本文主要是介绍下Callbacks相关API的使用,关于Callbacks的使用场景以及源码等将会在后续博客中进行。原创 2015-03-27 08:22:28 · 2288 阅读 · 0 评论 -
(十六)JQuery Ready和angularJS controller的执行顺序问题
项目中使用了JQuery和AngularJS框架,最近定位一个问题,原因就是JQuery Ready写在了angularJS controller之前,导致JQuery选择器无法选中需要的元素(因为angularJS controller还没有初始化,dom元素的class属性没有被添加)。于是就引出了一个问题,jquery和angularjs谁先执行谁后执行的问题。当然最好我们编写的代码不要依赖于这种顺序,依赖于某些顺序的代码更容易出错。可以可以看到:JQuery Ready和angularJS cont原创 2015-07-07 11:54:04 · 4826 阅读 · 0 评论 -
使用$.when()解决AJAX异步难题之:多个ajax操作进行逻辑与(and)
$.when()方法可以合并多个Promise得到一个新的Promise,相当于在原多个Promise之间建立了AND(逻辑与)的关系,如果所有组成Promise都已成功,则令合并后的Promise也成功,如果有任意一个组成Promise失败,则立即令合并后的Promise失败。原创 2015-07-23 18:44:42 · 12384 阅读 · 0 评论 -
jQuery数据缓存方案详解:$.data()的使用
我们经常使用隐藏控件或者是js全局变量来临时存储数据,全局变量容易导致命名污染,隐藏控件导致经常读写dom浪费性能。jQuery提供了自己的数据缓存方案,能够达到和隐藏控件、全局变量相同的效果,但是jQuery实现方式更优雅。为普通JS对象提供缓存时,jquery直接将数据保存在原始的JS对象上。为HTMLElement提供缓存时,却不会直接保存在HTMLElement上。而是保存在jQuery.cache这个全局对象上。这是因为本质区别在于:原始的DOM对象会被jQuery特殊对待,而jQuery包装后的原创 2015-12-16 10:16:38 · 32508 阅读 · 3 评论 -
JQuery事件绑定函数:on()与bind()的差别
JQuery从1.7+版本开始,提供了on()和off(),进行事件处理函数的绑定和取消。这2个API与JQuery最初提供的bind()和unbind()有很多相似的地方,也有一些不同之处。bind和unbind的详细介绍,可以参考这篇文章。 on()和bind()的函数签名如下:bind(type, [data], fn)on(type,[selector],[data],fn原创 2015-02-09 19:02:10 · 15239 阅读 · 0 评论 -
JQuery入门贴:五种基本选择器
JQuery的选择器是很强大,很灵活的。基本选择器是我们平时编程中用的最多的,虽然JQuery版本现在已经发展到了2.x版本,但是基本选择器没有发生改变,就是只有5种。原创 2015-02-05 21:35:58 · 1628 阅读 · 0 评论 -
jquery事件处理函数的参数问题:event对象和自定义参数
jquery中如果需要给按钮绑定click事件处理函数,那么我们可以使用如下的代码:$("#button1").click( function() { alert("I was clicked."); });一般我们都会按照上面的写法,注册事件处理函数,很少给处理函数传递参数。但是如果我们需要事件更详细的信息,比如事件发生时鼠标的位置等,那么我们就必须要使用事件对象了。原创 2015-01-26 19:39:40 · 4856 阅读 · 1 评论 -
jquery中4种层级选择器的差别和使用
我使用的是JQuery-2.1.1版本,在这个版本以及之前,JQuery中的层级选择器有4种。我们通过这4种选择器,来操作下面的HTML。 1、$("ancestor descendant"),选中祖先ancestor下的所有满足条件的后代descendant。 如$("#outer input")会选中button1,button2,b原创 2015-01-26 15:38:21 · 3497 阅读 · 0 评论 -
JQuery事件绑定函数one:绑定的事件处理函数只会被执行一次
JQuery绑定事件处理函数,有两种方式(方式1和方式2)是最常用的,方式3使用的较少。方式1:$("#button").click(function(){});这种方式很简单,也是平时编码最常用的做法。HTML中原始的事件,如onclick、onmouseover、onkeypress等,JQuery对名称进行了简单的封装,如onclick与JQuery的click对应,on原创 2015-01-27 19:22:31 · 16978 阅读 · 1 评论 -
了解JQuery的事件绑定特性和事件命名空间机制,编写更好、更灵活的事件处理代码
JQuery中的bind()和unbind(),提供了事件的绑定和取消机制,既可以绑定html默认支持的事件,也能够绑定自定义的事件。JQuery支持自定义事件,这显然给编程带来了极大的灵活性。下面就一起学习下,jquery事件处理的一些特性。项目中如果出现了你看不懂的代码,只有2种情况:要么别人不行,代码写的烂;要么自己不行,知识懂的少。如果不熟悉某种语言,又怎能用它写好代码呢?所以,代码质量、开发效率,和个人技能水平,团队水平紧密相关。原创 2015-01-27 00:04:05 · 4331 阅读 · 0 评论 -
JQuery的可见性选择器与show、hide的关系
1.:hidden选择器 不是指"visibility: hidden",而是指"display: none"。2.:visible选择器不是指"visibility: visible",而是指display属性不是none。即可见性选择器与visibility样式无关,只与display相关。顺便提一下::hidden选择器还能够选中type="hidden"的form元素。1.hide()函数只是将元素的display属性设置成none,visibility属性不受任何影响。2.hide()函数只作用于原创 2015-01-29 22:58:39 · 5425 阅读 · 3 评论 -
JQuery中的事件冒泡和阻止事件的传播行为
之前的这篇博客详细地介绍了javascript中的事件冒泡和事件捕获,以及DOM事件流。现在我们来看下,JQuery框架中的事件冒泡问题,以及如何阻止事件的传播行为。 1、JQuery中的事件绑定,都是属于事件冒泡。这篇博客介绍了JQuery中绑定事件处理函数的几种方式,从中可以看到:这几种绑定方式,都不允许我们传递事件类型(是事件冒泡,还是事件捕获)。而javascript原生提供的原创 2015-01-29 14:32:52 · 16474 阅读 · 1 评论 -
JQuery手动触发事件API之:通过代码看清trigger与triggerHandler的差别
如果我们想手动触发click事件,最常见的做法是通过$("#button").click()来触发,这种做法姑且叫方式一吧。方式一触发事件有3个特点:1. 会产生事件冒泡2. 不会阻止事件在浏览器下的默认行为3. 触发事件的时候,不能传递自定义参数。trigger与triggerHandler的差别在于:1. trigger会触发事件冒泡,而triggerHandler则不会2.triggerHandler只触发jQuery对象集合中第一个元素的事件处理函数,而trigger则触发所有对象的事件处理函数3.原创 2015-01-31 00:40:12 · 6399 阅读 · 0 评论 -
$.ajax访问RESTful Web Service报错:Unsupported Media Type
最近在项目中,前台页面使用jquery ajax访问后台CXF发布的rest服务,结果遇到了错误"Unsupported Media Type"。发布的服务java代码如下:import javax.jws.WebService;import javax.ws.rs.Consumes;import javax.ws.rs.GET;import javax.ws.rs.POST;im原创 2014-12-23 14:12:56 · 4648 阅读 · 0 评论 -
通过CSS效果:隔行变色和鼠标掠过高亮,学习JQuey的css()、hover()方法
下面的HTML和CSS能够实现div的隔行变色: #container div{ width:200px; height:25px; font-size:14px; text-align:center; color:#474747; } .even{ background-color: #EDEDED; } .odd{ ba原创 2015-02-01 11:24:30 · 2897 阅读 · 2 评论 -
JQuery中的id选择器含有特殊字符时,不能选中dom元素的解决方法
1、jquery类库在我们实际项目中用的很多,大家经常需要根据控件的id,获取对应的html元素。但是:当id含有特殊字符的时候,是不能选中的。2、自己简单的测试了下,jquery的id选择器只支持,单词、阿拉伯数字、下划线、中划线。其中单词,包括英文字母、汉字,但是控件id属于客户不可见内容,实际中开发人员是不用汉字作为id的,这里不考虑。3、自己写了一个工具方法,开人人员只要将id转义原创 2015-01-15 21:28:45 · 4561 阅读 · 1 评论 -
JQuery Ajax操作常用的API:serializeArray、serialize、param的区别和使用
使用JQuery进行ajax编码的时候,经常会使用到这3个API,本文学习下这3个API的使用方式。如下的HTML片段,如果我们将holder表单下的控件值提交到服务器。就需要用到serialize或者serializeArray了。 $("#holder").serialize() 输出结果是 a=1&b=2&c=3&f=8原创 2015-02-03 18:31:53 · 1962 阅读 · 0 评论 -
JQuery中的事件委托机制:delegate和undelegate
delegate()还有一个非常重要的性质:使用delegate() 方法的事件处理程序适用于当前已经存在或未来新增的元素。那么delegate()是怎么做到的呢?很简单,利用javascript中的事件冒泡机制。当子元素产生1个事件的时候,如果没有禁止这个事件的传播,那么父元素也会感知到这个事件(父元素上的事件处理函数被调用)。而且通过Event对象,能够拿到最初触发事件的元素。下面的代码,我们自己实现了1个简易的事件委托机制。原创 2015-02-03 22:43:13 · 3013 阅读 · 0 评论 -
HTML5数据存储方案data-*与jQuery数据存储方案$.data()的区别
至此:jQuery数据缓存和HTML5 data-*属性介绍完毕,简单总结下比较关键的几点:1.jQuery读取data-*会自动做数据类型转换,如果不想要这种转换只能使用attr()去获取原始的属性值。2.jQuery读取data-*属性是懒惰的、按需的,只有真正使用这些属性的时候,jQuery才会将其加载到内存。3.jQuery修改属性值,都是在内存中进行的,并不会修改 DOM。4.data-*会被jQuery绑定到HTMLElement对象上,而不是jQuery封装后的对象上。原创 2015-12-16 12:37:16 · 5048 阅读 · 0 评论