jQuery中鲜为人知的的几个方法

jQuery近些年来仍旧是web开发中最受欢迎的类库,虽然大家褒贬不一,但是仍旧不失为一款最流行的Javascript,在今天这篇文章中,我们将介绍几个jQuery的相关方法,无论你是入门级极客或者骨灰级极客,可能都会忽略这些方法的使用。希望大家会觉得有帮助!


在事件中return false


可能大家在编写事件相关代码的时候,有时候会使用return false语句,代码如下:


  1. $("a").click(function() {
  2.    $(".gbtags").toggle();
  3.    return false;
  4. }
复制代码

以上代码中,我们点击a元素,如果不return false,会触发对应a元素的链接,导致页面的地址变化。

而jQuery有标准的方法来帮助你实现类似上面的功能,代码如下:

  1. $("a").click(function(e) {
  2.    $(".gbtags").toggle();
  3.    e.preventDefault(); //阻止缺省的行为
  4. }
复制代码

那么这两个实现方式有什么不同呢? 我们可以看看jQuery的源代码,如下:

  1. if ( ret !== undefined ) {
  2.    if ( (event.result = ret) === false ) {
  3.       event.preventDefault();
  4.       event.stopPropagation();
  5.    }
  6. }
复制代码

大家看明白了吗?最简单理解,如下:

  1. return false
复制代码

等于

  1. event.preventDefault();
  2. event.stopPropagation();
复制代码
在事件处理中,如果你直接返回false,那么将会同时阻止元素缺省行为并且终止元素事件的Bubbling,即事件同时阻止当前元素父层元素,即:event.stopPropagation(); 所实现效果。


$.type来实现类型判断


也许大家都已经习惯了使用javascript的本地方法:typeof 来判断类型,但是在jQuery中提供了一个更好的方法帮助你判断类型,那就是$.type。


那么究竟有什么区别呢? 我们先看看这个gbdebug:
http://www.gbtags.com/gb/debug/3361dbff-41c0-465d-81e3-1ef6cbb275e1.htm
运行以上代码,能看到如下输出结果:
  1. // 返回object
  2. result(typeof null);
  3. // 返回object
  4. result(typeof [0, 1, 2]);
  5. // 返回object
  6. result(typeof new Number(3));
  7. // 返回null
  8. result($.type(null));
  9. // 返回array
  10. result($.type([0, 1, 2]));
  11. // 返回number
  12. result($.type(new Number(3)));
复制代码
大家看出来什么区别了吗? 使用$.type能够返回更准确的对象类型,而typeof则返回object,所以如果你使用jQuery来编码的时候,使用$.type 将更加方便。


使用attr()来实现removeAttr()的功能


可能大家习惯了使用attr()来添加元素属性,而使用removeAttr() 来删除元素属性。


但是其实使用attr()也能执行删除的效果,为什么呢?请看看如下jQuery源代码:



  1. attr: function( elem, name, value ) {
  2.     ...
  3.     if ( value !== undefined ) {
  4.         if ( value === null ) {
  5.             jQuery.removeAttr( elem, name );
  6.     ...
  7. }
复制代码
从上面jQuery的源代码中可以看出来,如果你设置value为null的话,其实它就可以实现removeAttr的方法功能。


http://www.gbtags.com/gb/debug/269c89e1-b22f-40f9-8d26-8d995e999d29.htm


因此,我们可以如下方式来运行判断是否删除属性:


  1. $('a').attr('title', condition ? value : null);
复制代码


否则你需要使用如下:
  1. condition ? $('a').attr('title', value) : $('a').removeAttr('title');
复制代码
是不是稍微简单一些?
有些时候我们需要将类似数组的数据结构转化成为一个真实的数组,然后调用相关数组方法,例如reverse,代码如下:

  1. // 返回 NodeList
  2. var elems = document.getElementsByTagName( "li" );
  3. // 转化为Array
  4. var arr = jQuery.makeArray( elems );
  5. // 调用数组方法反向排序
  6. arr.reverse();
  7. $( arr ).appendTo( document.body );
复制代码
相关gbdebug:
http://www.gbtags.com/gb/debug/75d28491-aa13-4868-aa95-10b079337b82.htm


是不是非常简单?如果不使用$.makeArray,那么你需要自己处理Javascript来实现类似的功能,会非常麻烦


总结


以上就是几个大家可能在jQuery开发中容易忽略的几个实用方法,或者你也有自己的一些不错的方法,请大家不吝分享!

相关推荐