jQuery:1.4新版本中你应该知道的15个新特性(一)
一、给jQuery(…)方法传递新的参数: jQuery()方法是jQuery库的核心方法之一,在1.32版本及早期的版本中,该方法是用来获取节点或者创建DOM对象的,它只支持一个参数。在使用来创建新的DOM对象时,我们若要给该DOM对象添加属性的话,只能通过attr()方法在后面追加,很是不方便,阅读起来也比较累。在jQuery1.4中,给jQuery方法新增了一个对象型的参数,用来创建新的DOM对象设...
一、给jQuery(…)方法传递新的参数:
jQuery()方法是jQuery库的核心方法之一,在1.32版本及早期的版本中,该方法是用来获取节点或者创建DOM对象的,它只支持一个参数。在使用来创建新的DOM对象时,我们若要给该DOM对象添加属性的话,只能通过attr()方法在后面追加,很是不方便,阅读起来也比较累。在jQuery1.4中,给jQuery方法新增了一个对象型的参数,用来创建新的DOM对象设置该DOM对象相应的属性。
jQuery1.32版本中实现代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
jQuery('<a></a>').attr({
id: 'foo',
href: 'http://google.com',
title: 'Become a Googler',
rel: 'external'
}).text('Go to Google!')
.css({
fontWeight: 700,
color: 'green'
})
.click(function(){
alert('Foo has been clicked!');
});
|
jQuery1.4版本中实现代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
jQuery('<a />', {
id: 'foo',
href: 'http://google.com',
title: 'Become a Googler',
rel: 'external',
text: 'Go to Google!',
css: {
fontWeight: 700,
color: 'green'
},
click: function(){
alert('Foo has been clicked!');
}
});
|
>>>>阅读更多关于jQuery(…)方法的资料…
二、新增”until”系列方法:
新增”until”系列方法中有三个方法:”nextUntil”, “prevUntil” 和”parentsUntil”,这些方法是用来获取符合条件内的DOM对象。中文你可以理解为“直到”的意思。
若有一段XHtml代码如下:
1 2 3 4 5 6 7 8 |
<ul>
<li>Apple</li>
<li>Banana</li>
<li>Grape</li>
<li>Strawberry</li>
<li>Pear</li>
<li>Peach</li>
</ul>
|
现在我想选取从含有apple的li到含有pear的li,则代码实现:
jQuery1.32版本中实现代码:
1 |
jQuery('ul li').slice(1, 4);
|
jQuery1.4版本中实现代码:
1 |
jQuery('ul li:contains(Apple)').nextUntil(':contains(Pear)');
|
虽然上面两者的选取效果是一样的,但若现在我在含有apple的li到含有pear的li中间再添加内容的话,1.32版本的代码就需要修改了,而1.4版本的则可继续使用,也就说1.4版本的代码可用性和语义性增强了。
>>>>阅读更多关于prevUntil, nextUntil, parentsUntil方法的资料…
三、给事件对象一次绑定多个事件:
1.4不再像1.32版本中那样链式地给一个时间对象绑定时间,现在你可以将多个时间归纳后绑定到一个方法中。
jQuery1.32版本中实现代码:
1 2 3 4 5 6 7 |
jQuery('#foo).bind('click', function() {
// do something
}).bind('mouseover', function() {
// do something
}).bind('mouseout‘, function() {
// do something
});
|
jQuery1.4版本中实现代码:
1 2 3 4 5 6 7 8 9 10 11 |
jQuery('#foo).bind({
click: function() {
// do something
},
mouseover: function() {
// do something
},
mouseout: function() {
// do something
}
});
|
当然对.one()一次点击事件也是适用的哦!
>>>>阅读更多关于.bind(…)方法的资料…
四、Per-Property Easing动画效果
在1.32版本中,我们使用animate()方法给对象添加动画效果时,特效很单一,只能再引入jquery.easing.js插件来丰富动画特效。在新版本1.4中将该插件集成到了jQuery库中,这样在使用过的过程中就更加地方便了。
jQuery1.4版本中实现代码:
1 2 3 4 |
jQuery('#foo').animate({
left: 500,
top: [500, 'easeOutBounce']
}, 2000);
|
当然也可以给附加的属性参数内添加动画效果,如:
1 2 3 4 5 6 7 8 9 |
jQuery('#foo').animate({
left: 500,
top: 500
}, {
duration: 2000,
specialEasing: {
top: 'easeOutBounce'
}
});
|
>>>>阅读更多关于per-property easing的资料…
五、新增live事件:
在1.32版本中,live()方法只对click, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, keydown, keypress, keyup这些时间提供了支持,而不支持也比较常用的focus和blur时间。在1.4版本中新增了submit, change, focus, blur四种时间的支持。其中focus对应的是focusin事件,而blur对应了focusout事件。
jQuery1.4版本中实现代码:
1 2 3 4 5 |
jQuery('input').live('focusin', function(){
// do something with this
}).live('focusout', function(){
// do something with this
});
|
六、控制方法的上下文对象:
1.4版本在jQuery命名空间下新增了一个名叫”proxy“的方法,该方法有两个参数:一个是作用域,一个是准备执行的处理方法。在Javascript中,this关键字很巧妙地自动执行父亲对象或某个DOM元素对象。当有时候我们希望this指向的不是一个DOM元素对象,而是希望它指向一个之前创建的对象。
举个列子,就很容易明白!比如,现在我们有一个app对象,该对象内部有一个”clickHandler“方法和一个命名为”config“的对象。代码如下:
1 2 3 4 5 6 7 8 |
var app = {
config: {
clickMessage: 'Hi!'
},
clickHandler: function() {
alert(this.config.clickMessage);
}
};
|
当我们调用app.clickHandler()方法时,app对象就有了自己的上下文对象:clickHandler方法中的this指向的是app对象。执行后会弹出内容为”Hi!“的提示框。若现在我希望将该app对象下的clickHandler方法绑定在一个超链接上,如下:
1 |
jQuery('a').bind('click', app.clickHandler);
|
而此时,当我们点击该超链接时,app对象下的clickHandler方法并不会执行,用Firebug测试则会提示”app.clickHandler is not a function!”。原因在于jQuery(以及绝大部分的事件对象)默认地将事件对象作为了该clickHandler方法的上下文对象,也就是此时this指向了a超链接标签元素。而我们的实际愿望是希望this执行app对象,那么1.4中我们就可以使用新增的proxy()方法来处理这一问题。代码如下:
1 2 3 4 |
jQuery('a').bind(
'click',
jQuery.proxy(app, 'clickHandler')
);
|
这样执行后提示框就会正常地弹出了。proxy()方法返回的是一个包装后的方法,它将执行你所期望的对象(通过第一个参数传递)。这在其他上下文对象中也很实用,比如给其他方法或插件传递回调函数。
>>>>阅读更多关于jQuery.proxy()方法的资料…
七、延迟动画队列:
在平时编写代码时,你或许发现有一个动画效果还没完成呢,下面的代码就已经执行完了。而我们希望的是等动画效果执行完成后或执行一段时间后再执行后面的代码。1.4版本中新增了delay()方法来延迟代码的执行。
jQuery1.32版本中实现代码:
1 2 3 |
setTimeout(500, function() {
// do something
});
|
jQuery1.4版本中实现代码:
1 2 3 4 |
jQuery('#foo')
.slideDown() // Slide down
.delay(200) // Do nothing for 200 ms
.fadeIn(); // Fade in
|
若你希望延迟一个动画队列比默认的“fx”(queue()函数的默认参数)还要慢的话,你只需要将这个queue的变量名当作delay()方法的第二个参数传递即可。
>>>>阅读更多关于.delay(…)方法的资料…
八、判断一个DOM父对象中是否含有某个匹配的子对象:
1.4中新增了一个过滤型的方法has()来判断某个对象是否在某个标签或集合内出现过。该方法将返回在标签中出现的所有匹配子对象的集合,至少会包含一个子对象。若没有找到匹配子对象,则返回的是一个空的集合。
1 |
jQuery('div').has('ul');
|
当然jQuery1.32版本中的.contains()方法其实也可以达到同样的效果,1.4版本又对.contains()进行了完善。在1.4版本中通过给.contains()方法传递两个DOM对象参数,从而判断第二个参数对象是否在第一个参数对象中。代码如下:
1 2 3 |
jQuery.contains(document.documentElement, document.body); // Returns true - <body> is within <html> </html></body> |
>>>>阅读更多关于.has(…),jQuery.contains(…)方法的资料…
转载请注明文章转载自:网站前端,web前端,前端脚本,前端优化|时代前端 [http://www.52shidai.com]
本文链接地址:jQuery:1.4新版本中你应该知道的15个新特性(一)
