Life of xhu

About

文章归档页面JS折腾记录

Jan 22, 2014

  |   #Frontend

在我的这篇博文中,我抱怨过jQuery的选择器,后来一看,我去当时简直是SB,a = 0是标识符,放到$('.arc_link li:eq(a)').fadeIn();')中是字符串的一部分,怎么可能有效果。。。

当然作为一个有毅力的码农,我是不可能停止折腾的,今天再次动手,居然很轻松就搞定了,就写一下今天的一些收获吧。

  1. Javascript中,字符串是可以和整数相加的,解释器会把整数自动地变成字符串,如:

     console.log('hello' + 1 + 'world')    //=>'hello1world'  
    
  2. CSS中,隐藏元素有两种方法:

     #xxx{ display:note }
     #xxx{ visibility:hidden }
    

    区别在于,前者隐藏元素隐藏元素同时不占用位置,后者隐藏元素但是会占用位置。

  3. jQueryshow()hide()以及fadeIn()fadeOut(),都只能操作用display属性隐藏的元素,对使用visibility隐藏的元素,不起作用。

  4. 相对应的,jQuery中的animate()也无法操作visibility属性,以下是jQueryanimate()方法可以操作的属性:

     backgroundPosition
     borderWidth
     borderBottomWidth
     borderLeftWidth
     borderRightWidth
     borderTopWidth
     borderSpacing
     margin
     marginBottom
     marginLeft
     marginRight
     marginTop
     outlineWidth
     padding
     paddingBottom
     paddingLeft
     paddingRight
     paddingTop
     height
     width
     maxHeight
     maxWidth
     minHeight
     maxWidth
     font
     fontSize
     bottom
     left
     right
     top
     letterSpacing
     wordSpacing
     lineHeight
     textIndent
     opacity  
    
  5. Javascript中,setTimeout()的函数只会运行一次,而setInterval()的函数将会循环执行下去:

     setTimeout('show_pic()',50)		//50毫秒后执行一个show_pic()函数
     setInterval('show_pic()', 50)	   //每50毫秒执行一次show_pic()函数
    
  6. Javascript中的变量加不加var的作用域区别我还是没搞清楚,目前总结一下我知道的,就是,在jQuery的每一个

     $(document).ready(function(){...})
    

    中声明的变量,带var的变量只能在这个function()中使用,而不带的,在这个function()之外也可以访问,函数同理。

  7. jQuery的选择器,有些需要带上元素类型,有些的则不用,实际使用的时候多试一下就好了,比如:

     $('.arc_link').fadeIn()     //有效果
     console.log($('.arc_link').length)     //无法统计元素个数
     console.log($('div.arc_link').length)      //可以输出元素个数
    
  8. jQuery的很多方法都是有回调函数的,比如:

     function b(){...}
     $('a').fadeIn('normal', b())     //a元素以正常速度淡入后立即执行b函数
    

然后说个刚刚编程中出现的小挫折,因为ARCHIVES页面上的文章标题我需要它初始是不显示但是占位置,然后用Javascript控制轮流显示出来,可是jQueryanimate()方法只能控制diaplay属性,而display属性又是不占位置的,所以我立刻陷入了思维的死循环。。。

不过还好我灵光一闪,隐藏+占位置=透明啊,不就是opacity属性么,再一看,jQueryanimate()支持操作这个属性啊,果断动手,搞定!

最后,我发誓写Javascript再也不写分号和双引号了╮(╯▽╰)╭~~