jQuery动画+实例

1.动画基础隐藏和显示

jQuery中隐藏元素的hide方法

让页面上的元素不可见,一般可以通过设置css的display为none属性。但是通过css直接修改是静态的布局,如果在代码执行的时候,一般是通过js控制元素的style属性,这里jQuery提供了一个快捷的方法.hide()来达到这个效果

$elem.hide()

提供参数:

.hide( options )

当提供hide方法一个参数时,.hide()就会成为一个动画方法。.hide()方法将会匹配元素的宽度,高度,以及不透明度,同时进行动画操作

快捷参数:

.hide("fast / slow")

这是一个动画设置的快捷方式,’fast’ 和 ‘slow’ 分别代表200和600毫秒的延时,就是元素会执行200/600毫秒的动画后再隐藏

注意:

jQuery在做hide操作的时候,是会保存本身的元素的原始属性值,再之后通过对应的方法还原的时候还是初始值。比如一个元素的display属性值为inline,那么隐藏再显示时,这个元素将再次显示inline。一旦透明度 达到0,display样式属性将被设置为none,这个元素将不再在页面中影响布局

<script type="text/javascript">
        //点击buttom1 直接隐藏
        $("button:first").click(function() {
            $("#a1").hide()
        });
        </script>


        <h4>测试一</h4>
        <div id="a2">hide动画操作</div>
        <button>hide带动画</button>
        <script type="text/javascript">
        //点击buttom2 执行动画隐藏
        $("button:last").click(function() {
            $("#a2").hide({
                duration: 3000,
                complete: function() {
                    alert('执行3000ms动画完毕')
                }
            })
        });
        </script>
  • jQuery中显示元素的show方法

css中有display:none属性,同时也有display:block,所以jQuery同样提供了与hide相反的show方法

方法的使用几乎与hide是一致的,hide是让元素显示到隐藏,show则是相反,让元素从隐藏到显示

看一段代码:使用上一致,结果相反

$('elem').hide(3000).show(3000)

让元素执行3秒的隐藏动画,然后执行3秒的显示动画。

show与hide方法是非常常用的,但是一般很少会基于这2个属性执行动画,大多情况下还是直接操作元素的显示与隐藏为主

注意事项:

1.show与hide方法是修改的display属性,通过是visibility属性布局需要通过css方法单独设置
2.如果使用!important在你的样式中,比如display: none !important,如果你希望.show()方法正常工作,必须使用.css('display', 'block !important')重写样式
3.如果让show与hide成为一个动画,那么默认执行动画会改变元素的高度,高度,透明度
 <script type="text/javascript">

    //点击button
    //执行3秒隐藏
    //执行3秒显示
    $("button").click(function() {
        $("#a1").hide(3000).show(3000)
    });

    </script>

jQuery中显示与隐藏切换toggle方法

show与hide是一对互斥的方法。需要对元素进行显示隐藏的互斥切换,通常情况是需要先判断元素的display状态,然后调用其对应的处理方法。比如显示的元素,那么就要调用hide,反之亦然。 对于这样的操作行为,jQuery提供了一个便捷方法toggle用于切换显示或隐藏匹配元素

基本的操作:toggle();

这是最基本的操作,处理元素显示或者隐藏,因为不带参数,所以没有动画。通过改变CSS的display属性,匹配的元素将被立即显示或隐藏,没有动画。

如果元素是最初显示,它会被隐藏
如果隐藏的,它会显示出来

display属性将被储存并且需要的时候可以恢复。如果一个元素的display值为inline,然后是隐藏和显示,这个元素将再次显示inline

提供参数:.toggle( [duration ] [, complete ] )

同样的提供了时间、还有动画结束的回调。在参数对应的时间内,元素会发生显示/隐藏的改变,在改变的过程中会把元素的高、宽、不透明度进行一系列动画效果。这个元素其实就是show与hide的方法

直接定位:.toggle(display)

直接提供一个参数,指定要改变的元素的最终效果

其实就是确定是使用show还是hide方法

if ( display === true ) {
  $( "elem" ).show();
} else if ( display === false ) {
  $( "elem" ).hide();
}
 <script type="text/javascript">
    $("button:first").click(function() {
        $(".left").toggle(3000)
    });
    </script>

    <script type="text/javascript">
    $("button:last").click(function() {
        $(".right").toggle(3000)
    });
    </script>

2.上卷下拉效果

jQuery中下拉动画slideDown

对于隐藏的元素,在将其显示出来的过程中,可以对其进行一些变化的动画效果。之前学过了show方法,show方法在显示的过程中也可以有动画,但是.show()方法将会匹配元素的宽度,高度,以及不透明度,同时进行动画操作。这里将要学习一个新的显示方法slideDown方法

.slideDown():用滑动动画显示一个匹配元素

.slideDown()方法将给匹配元素的高度的动画,这会导致页面的下面部分滑下去,弥补了显示的方式

常见的操作,提供一个动画是时间,然后传递一个回调,用于知道动画是什么时候结束

.slideDown( [duration ] [, complete ] )

持续时间(duration)是以毫秒为单位的,数值越大,动画越慢,不是越快。字符串 ‘fast’ 和 ‘slow’ 分别代表200和600毫秒的延时。如果提供任何其他字符串,或者这个duration参数被省略,那么默认使用400 毫秒的延时。

具体使用:

$("ele").slideDown(1000, function() {
    //等待动画执行1秒后,执行别的动作....
});

注意事项:

1.下拉动画是从无到有,所以一开始元素是需要先隐藏起来的,可以设置display:none
2.如果提供回调函数参数,callback会在动画完成的时候调用。将不同的动画串联在一起按顺序排列执行是非常有用的。这个回调函数不设置任何参数,但是 this会设成将要执行动画的那个DOM元素,如果多个元素一起做动画效果,那么要非常注意,回调函数会在每一个元素执行完动画后都执行一次,而不是这组 动画整体才执行一次
<script type="text/javascript">
        //点击button
        //执行3秒隐藏
        //执行3秒显示
        $("button:first").click(function() {
            $("#a1").slideDown(3000)
        });
        </script>
<script type="text/javascript">
        //点击button
        //执行3秒隐藏
        //执行3秒显示
        $("button:last").click(function() {
            $("#a2").slideDown(3000,function(){
                alert('动画执行结束')
            })
        });
        </script>

jQuery中上卷动画slideUp

对于显示的元素,在将其隐藏的过程中,可以对其进行一些变化的动画效果。之前学过了hide方法,hide方法在显示的过程中也可以有动画,但 是.hide()方法将为匹配元素的宽度,高度,以及不透明度,同时进行动画操作。这里将要学习一个新的显示方法slideUp方法

最简单的使用:不带参数

$("elem").slideUp();

这个使用的含义就是:找到元素的高度,然后采用一个下滑动画让元素一直滑到隐藏,当高度为0的时候,也就是不可见的时,修改元素display 样式属性被设置为none。这样就能确保这个元素不会影响页面布局了

带参数:

.slideUp( [duration ] [, easing ] [, complete ] )

同样可以提供一个时间,然后可以使用一种过渡使用哪种缓动函数,jQuery默认就2种,可以通过下载插件支持。最后一个动画结束的回调方法。

因为动画是异步的,所以要在动画之后执行某些操作就必须要写到回调函数里面,这里要特别注意

 <script type="text/javascript">
        //点击button
        //执行3秒隐藏
        //执行3秒显示
        $("button:first").click(function() {
            $("#a1").slideUp(3000)
        });
        </script>
<script type="text/javascript">
        //点击button
        //执行3秒隐藏
        //执行3秒显示
        $("button:last").click(function() {
            $("#a2").slideUp(3000,function(){
                alert('动画执行结束')
            })
        });
        </script>

jQuery中上卷下拉切换slideToggle

slideDown与slideUp是一对相反的方法。需要对元素进行上下拉卷效果的切换,jQuery提供了一个便捷方法slideToggle用滑动动画显示或隐藏一个匹配元素

基本的操作:slideToggle();

这是最基本的操作,获取元素的高度,使这个元素的高度发生改变,从而让元素里的内容往下或往上滑。

提供参数:.slideToggle( [duration ] ,[ complete ] )

同样的提供了时间、还有动画结束的回调。在参数对应的时间内,元素会完成动画,然后出发回调函数

同时也提供了时间的快速定义,字符串 ‘fast’ 和 ‘slow’ 分别代表200和600毫秒的延时

slideToggle("fast") 
slideToggle("slow") 

注意:

1.display属性值保存在jQuery的数据缓存中,所以display可以方便以后可以恢复到其初始值
2.当一个隐藏动画后,高度值达到0的时候,display 样式属性被设置为none,以确保该元素不再影响页面布局
       <script type="text/javascript">
        $("button").click(function() {
            $("#a1").slideToggle(3000)
        });
        </script>

3.淡入淡出效果

jQuery中淡出动画fadeOut

让元素在页面不可见,常用的办法就是通过设置样式的display:none。除此之外还可以一些类似的办法可以达到这个目的。这里要提一个透明度的方法,设置元素透明度为0,可以让元素不可见,透明度的参数是0~1之间的值,通过改变这个值可以让元素有一个透明度的效果。常见的淡入淡出动画正是这样的原理。

fadeOut()函数用于隐藏所有匹配的元素,并带有淡出的过渡动画效果

所谓”淡出”隐藏的,元素是隐藏状态不对作任何改变,元素是可见的,则将其隐藏。

.fadeOut( [duration ], [ complete ] )

通过不透明度的变化来实现所有匹配元素的淡出效果,并在动画完成后可选地触发一个回调函数。这个动画只调整元素的不透明度,也就是说所有匹配的元素的高度和宽度不会发生变化。

字符串 ‘fast’ 和 ‘slow’ 分别代表200和600毫秒的延时。如果提供任何其他字符串,或者这个duration参数被省略,那么默认使用400毫秒的延时

 <script type="text/javascript">
    //【显示】按钮
    $("#btnShow").click(function() {
        $("p").show();
    });

    //【隐藏】按钮
    $("#btnFadeOut").click(function() {
        var v = $("#animation").val();
        if (v == "1") {
            $("p").fadeOut();
        } else if (v == "2") {
            $("p").fadeOut("slow");
        } else if (v == "3") {
            $("p").fadeOut(3000);
        } else if (v == "4") {
            $("p").fadeOut(2000, function() {
                alert("隐藏完毕!");
            });
        } else if (v == "5") {
            $("p").fadeOut(1000, "linear");
        } else if (v == "6") {
            $("p").fadeOut({
                duration: 1000
            });
        }
    });
    </script>

jQuery中淡入动画fadeIn

fadeOut是淡出效果,相反的还有淡入效果fadeIn,方法使用上两者都是一致的,只是结果相反

.fadeIn( [duration ], [ complete ] )

duration:指定过渡动画运行多长时间(毫秒数),默认值为400。该参数也可以为字符串”fast”(=200)或”slow”(=600)。 
元素显示完毕后需要执行的函数。函数内的this指向当前DOM元素。

fadeIn()函数用于显示所有匹配的元素,并带有淡入的过渡动画效果。

注意:

1.淡入的动画原理:操作元素的不透明度从0%逐渐增加到100%
2.如果元素本身是可见的,不对其作任何改变。如果元素是隐藏的,则使其可见
  <script type="text/javascript">
    //【显示】按钮
    $("#btnFadeIn").click(function() {
        var v = $("#animation").val();
        if (v == "1") {
            $("p").fadeIn();
        } else if (v == "2") {
            $("p").fadeIn("slow");
        } else if (v == "3") {
            $("p").fadeIn(3000);
        } else if (v == "4") {
            $("p").fadeIn(2000, function() {
                alert("显示完毕!");
            });
        } else if (v == "5") {
            $("p").fadeIn(1000, "linear");
        } else if (v == "6") {
            $("p").fadeIn({
                duration: 1000
            });
        }
    });

    // 【隐藏】按钮
    $("#btnHide").click(function() {
        $("p").hide();
    });
    </script>

jQuery中淡入淡出切换fadeToggle

fadeToggle()函数用于切换所有匹配的元素,并带有淡入/淡出的过渡动画效果。之前也学过toggle、slideToggle 也是类似的处理方式

fadeToggle切换fadeOut与fadeIn效果,所谓”切换”,即如果元素当前是可见的,则将其隐藏(淡出);如果元素当前是隐藏的,则使其显示(淡入)。

常用语法:.fadeToggle( [duration ] ,[ complete ] )

可选的 duration 参数规定效果的时长。它可以取以下值:”slow”、”fast” 或毫秒。 可选的 callback 参数是 fadeToggle完成后所执行的函数名称。

fadeToggle() 方法可以在 fadeIn() 与 fadeOut() 方法之间进行切换。如果元素已淡出,则 fadeToggle() 会向元素添加淡入效果。如果元素已淡入,则 fadeToggle() 会向元素添加淡出效果。

<script type="text/javascript">
    //【切换显示/隐藏】按钮
    $("#btnFadeSwitch").click(function() {
        var v = $("#animation").val();
        if (v == "1") {
            $("p").fadeToggle();
        } else if (v == "2") {
            $("p").fadeToggle("slow");
        } else if (v == "3") {
            $("p").fadeToggle(3000);
        } else if (v == "4") {
            $("p").fadeToggle(1000, function() {
                alert("切换完毕!");
            });
        } else if (v == "5") {
            $("p").fadeToggle(1000, "linear");
        } else if (v == "6") {
            $("p").fadeToggle({
                duration: 1000
            });
        }
    });
    </script>

jQuery中淡入效果fadeTo

淡入淡出fadeIn与fadeOut都是修改元素样式的opacity属性,但是他们都有个共同的特点,变化的区间要么是0,要么是1

fadeIn:淡入效果,内容显示,opacity是0到1 
fadeOut:淡出效果,内容隐藏,opacity是1到0

如果要让元素保持动画效果,执行opacity = 0.5的效果时,要如何处理?

如果不考虑CSS3,我们用JS实现的话,基本就是通过定时器,在设定的时间内一点点的修改opacity的值,最终为0.5,原理虽说简单,但是总不如一键设置这么舒服,jQuery提供了fadeTo方法,可以让改变透明度一步到位

语法

.fadeTo( duration, opacity ,callback)

必需的 duration参数规定效果的时长。它可以取以下值:”slow”、”fast” 或毫秒。fadeTo() 方法中必需的 opacity 参数将淡入淡出效果设置为给定的不透明度(值介于 0 与 1 之间)。可选的 callback 参数是该函数完成后所执行的函数名称。

<script type="text/javascript">
    //【切换显示/隐藏】按钮
    $("#btnFadeSwitch").click(function() {
        var v = $("#animation").val();
        if (v == "1") {
            $("p").fadeTo("slow", 0.5);
        } else if (v == "2") {
            $("p").fadeTo(1000, 0.2);
        } else if (v == "3") {
            $("p").fadeTo(1000, 0.9, function() {
                alert('完成')
            });
        }
    });
    </script>

4.动画切换的比较

jQuery中toggle与slideToggle以及fadeToggle的比较

操作元素的显示和隐藏可以有几种方法。 
例如:

1.改变样式display为none
2.设置位置高度为0
3.设置透明度为0

都能达到这个目的,并且针对这样的处理jQuery都提供了各自的方法。show/hide、sildeDown/sildeUp、fadeIn/fadeOut。除此之外,还引入了toggle、sildeToggle以及fadeToggle切换方法 
toggle、sildeToggle以及fadeToggle的区别:

1.toggle:切换显示与隐藏效果
2.sildeToggle:切换上下拉卷滚效果
3.fadeToggle:切换淡入淡出效果

当然细节上还是有更多的不同点:

toggle与slideToggle细节区别:

1.toggle:动态效果为从右至左。横向动作,toggle通过display来判断切换所有匹配元素的可见性
2.slideToggle:动态效果从下至上。竖向动作,slideToggle 通过高度变化来切换所有匹配元素的可见性

fadeToggle方法

1.fadeToggle() 方法在 fadeIn() 和 fadeOut() 方法之间切换。

2.元素是淡出显示的,fadeToggle() 会使用淡入效果显示它们。

3.元素是淡入显示的,fadeToggle() 会使用淡出效果显示它们。

4.注释:隐藏的元素不会被完全显示(不再影响页面的布局)
    <script type="text/javascript">

    $("#btnShow").click(function() {
        var v = $("#animation").val();
        if (v == "1") {
            $("p").toggle();
        } else if (v == "2") {
            $("p").slideToggle("slow");
        } else if (v == "3") {
            $("p").fadeToggle(1000, "linear");
        }
    });
    </script>

5.自定义动画

jQuery中动画animate(上)

有些复杂的动画通过之前学到的几个动画函数是不能够实现,这时候就需要强大的animate方法了

操作一个元素执行3秒的淡入动画,对比一下2组动画设置的区别

$(elem).fadeOut(3000)  
$(elem).animate({   
    opacity:0
},3000)

显而易见,animate方法更加灵活了,可以精确的控制样式属性从而执行动画

语法:

.animate( properties ,[ duration ], [ easing ], [ complete ] )
.animate( properties, options )

.animate()方法允许我们在任意的数值的CSS属性上创建动画。2种语法使用,几乎差不多了,唯一必要的属性就是一组CSS属性键值对。这组属性和用于设置.css()方法的属性键值对类似,除了属性范围做了更多限制。第二个参数开始可以单独传递多个实参也可以合并成一个对象传递了

参数分解:

properties:一个或多个css属性的键值对所构成的Object对象。要特别注意所有用于动画的属性必须是数字的,除非另有说明;这些属性如果不是数字的将不能使用基本的jQuery功能。比如常见的,border、margin、padding、width、height、font、left、top、right、bottom、wordSpacing等等这些都是能产生动画效果的。background-color很明显不可以,因为参数是red或者GBG这样的值,非常用插件,否则正常情况下是不能只用动画效果的。注意,CSS 样式使用 DOM 名称(比如 “fontSize”)来设置,而非 CSS 名称(比如 “font-size”)。

特别注意单位,属性值的单位像素(px),除非另有说明。单位em 和 %需要指定使用

.animate({
    left: 50, 
    width: '50px'   
    opacity: 'show',  
    fontSize: "10em",
}, 500);

除了定义数值,每个属性能使用’show’, ‘hide’, 和 ‘toggle’。这些快捷方式允许定制隐藏和显示动画用来控制元素的显示或隐藏

.animate({
    width: "toggle"
});

如果提供一个以+= 或 -=开始的值,那么目标值就是以这个属性的当前值加上或者减去给定的数字来计算的

.animate({ 
    left: '+=50px'
}, "slow");

duration时间

动画执行的时间,持续时间是以毫秒为单位的;值越大表示动画执行的越慢,不是越快。还可以提供’fast’ 和 ‘slow’字符串,分别表示持续时间为200 和 600毫秒。

easing动画运动的算法

jQuery库中默认调用 swing。如果需要其他的动画算法,请查找相关的插件

complete回调

动画完成时执行的函数,这个可以保证当前动画确定完成后发会触发

<script type="text/javascript">
    $("#exec").click(function() {
        var v = $("#animation").val();
        var $aaron = $("#aaron");
        if (v == "1") {
            // 数值的单位默认是px
            $aaron.animate({
                width  :300,
                height :300
            });
        } else if (v == "2") {
            // 在现有高度的基础上增加100px
            $aaron.animate({
                 width  : "+=100px",
                 height : "+=100px"
            });
        } else if (v == "3") {
            $aaron.animate({
                fontSize: "5em"
            }, 2000, function() {
                alert("动画 fontSize执行完毕!");
            });
        } else if (v == "4") {
            //通过toggle参数切换高度
            $aaron.animate({
                width: "toggle"
            });
        } 
    });
    </script>

jQuery中动画animate(下)

animate在执行动画中,如果需要观察动画的一些执行情况,或者在动画进行中的某一时刻进行一些其他处理,我们可以通过animate提供的第二种设置语法,传递一个对象参数,可以拿到动画执行状态一些通知

.animate( properties, options )

options参数

duration - 设置动画执行的时间
easing - 规定要使用的 easing 函数,过渡使用哪种缓动函数
step:规定每个动画的每一步完成之后要执行的函数
progress:每一次动画调用的时候会执行这个回调,就是一个进度的概念
complete:动画完成回调

其中最关键的一点就是:

如果多个元素执行动画,回调将在每个匹配的元素上执行一次,不是作为整个动画执行一次

列出常用的方式:

$('#elem').animate({
    width: 'toggle',  
    height: 'toggle'
  }, {
    duration: 5000,
    specialEasing: {
      width: 'linear',
      height: 'easeOutBounce'
    },
    complete: function() {
      $(this).after('<div>Animation complete.</div>');
    }
  });
<script type="text/javascript">
    $("#exec").click(function() {
        var v = $("#animation").val();
        var $aaron = $("#aaron");
        if (v == "1") {
            //观察每一次动画的改变
            $aaron.animate({
                height: '50'
            }, {
                duration :2000,
                //每一个动画都会调用
                step: function(now, fx) {
                   $aaron.text('高度的改变值:'+now)
                }
            })
        } else if (v == "2") {
            //观察每一次进度的变化
            $aaron.animate({
                height: '50'
            }, {
                duration :2000,
                //每一步动画完成后调用的一个函数,
                //无论动画属性有多少,每个动画元素都执行单独的函数
                progress: function(now, fx) {
                   $aaron.text('进度:'+arguments[1])
                    var data = fx.elem.id + ' ' + fx.prop + ': ' + now;
                    alert(data)
                }
            })
        } 
    });
    </script>
  • jQuery中停止动画stop

动画在执行过程中是允许被暂停的,当一个元素调用.stop()方法,当前正在运行的动画(如果有的话)立即停止

语法:

.stop( [clearQueue ], [ jumpToEnd ] )
.stop( [queue ], [ clearQueue ] ,[ jumpToEnd ] )

stop还有几个可选的参数,简单来说可以这3种情况

1..stop(); 停止当前动画,点击在暂停处继续开始
2..stop(true); 如果同一元素调用多个动画方法,尚未被执行的动画被放置在元素的效果队列中。这些动画不会开始,直到第一个完成。当调用.stop()的时候,队列中的下一个动画立即开始。如果clearQueue参数提供true值,那么在队列中的动画其余被删除并永远不会运行
3..stop(true,true); 当前动画将停止,但该元素上的 CSS 属性会被立刻修改成动画的目标值

简单的说:参考下面代码、

$("#aaron").animate({
    height: 300
}, 5000)
$("#aaron").animate({
    width: 300
}, 5000)
$("#aaron").animate({
    opacity: 0.6
}, 2000)
stop():只会停止第一个动画,第二个第三个继续
stop(true):停止第一个、第二个和第三个动画
stop(true ture):停止动画,直接跳到第一个动画的最终状态 
<script type="text/javascript">

    //点击执行动画
    $("#exec").click(function(){
        $("#aaron").animate({
            height: 300
        }, 5000)
        $("#aaron").animate({
            width: 300
        }, 5000)
        $("#aaron").animate({
            opacity: 0.6
        }, 2000)
    })


    $("#stop").click(function() {
        var v = $("#animation").val();
        var $aaron = $("#aaron");
        if (v == "1") {
            //当前当前动画
            $aaron.stop()
        } else if (v == "2") {
            //停止所以队列
            $aaron.stop(true)
        } else if (v == "3") {
            //停止动画,直接跳到当前动画的结束
            $aaron.stop(true,true)
        } 
    });
    </script>
  • 6.JQuery核心

jQuery中each方法的应用

jQuery中有个很重要的核心方法each,大部分jQuery方法在内部都会调用each,其主要的原因的就是jQuery的实例是一个元素合集

如下:找到所有的div,并且都设置样式,css只是一个方法,所以内部会调用each处理这个div的合集,给每个div都设置style属性

$('div').css(...)
  • jQuery的大部分方法都是针元素合集的操作,所以jQuery会提供$(selector).each()来遍历jQuery对象

.each只是处理jQuery对象的方法,jQuery还提供了一个通用的jQuery.each方法,用来处理对象和数组的遍历

语法

jQuery.each(array, callback )
jQuery.each( object, callback )
  • 第一个参数传递的就是一个对象或者数组,第二个是回调函数
$.each(["aron", "博客网"], function(index, value) {
   //index是索引,也就是数组的索引
   //value就是数组中的值了
});

each就是for循环方法的一个包装,内部就是通过for遍历数组与对象,通过回调函数返回内部迭代的一些参数,第一个参数是当前迭代成员在对象或数组中的索引值(从0开始计数),第二个参数是当前迭代成员(与this的引用相同)

jQuery.each()函数还会根据每次调用函数callback的返回值来决定后续动作。如果返回值为false,则停止循环(相当于普通循环中的break);如果返回其他任何值,均表示继续执行下一个循环。

$.each(["aron", "博客网"], function(index, value) {
    return false; //停止迭代
});

jQuery方法可以很方便的遍历一个数据,不需要考虑这个数据是对象还是数组

<script type="text/javascript">
    $("#exec").click(function() {
        var v = $("#animation").val();
        var $aaron = $("#aaron");
        $aaron.empty();
        if (v == "1") {

            // 遍历数组元素
            $.each(['Aaron', '博客网'], function(i, item) {
                $aaron.append("索引=" + i + "; 元素=" + item);
            });
        } else if (v == "2") {
            // 遍历对象属性
            $.each({
                name: "张三",
                age: 18
            }, function(property, value) {
                $aaron.append("属性名=" + property + "; 属性值=" + value);
            });
        } 
    });
    </script>
  • jQuery中查找数组中的索引inArray

在PHP有in_array()判断某个元素是否存在数组中,JavaScript却没有,但是jQuery封装了inArray()函数判断元素是否存在数组中。注意了:在ECMAScript5已经有数据的indexOf方法支持了,但是jQuery保持了版本向下兼容,所以封装了一个inArray方法

jQuery.inArray()函数用于在数组中搜索指定的值,并返回其索引值。如果数组中不存在该值,则返回 -1。

语法:

jQuery.inArray( value, array ,[ fromIndex ] )

用法非常简单,传递一个检测的目标值,然后传递原始的数组,可以通过fromIndex规定查找的起始值,默认数组是0开始

例如:在数组中查找值是5的索引

$.inArray(5,[1,2,3,4,5,6,7]) //返回对应的索引:4

注意:

如果要判断数组中是否存在指定值,你需要通过该函数的返回值不等于(或大于)-1来进行判断

<script type="text/javascript">
    $("#exec").click(function() {
        var v = $("#animation").val();
        var $aaron = $("#aaron");
           $aaron.empty();
        if (v == "1") {

            var index = $.inArray('csdn',['test','csdn', 'array','博客网']);

            $aaron.text('csdn的索引是: '+ index)

        } else if (v == "2") {

            //指定索引开始的位置
            var index = $.inArray('a',['a','b','c','d','a','c'],2);

            $aaron.text('a的索引是: '+ index)
        } 
    });
    </script>

jQuery中去空格神器trim方法

页面中,通过input可以获取用户的输入值,例如常见的登录信息的提交处理。用户的输入不一定是标准的,输入一段密码:’ 1123456 “,注意了: 密码的前后会留空,这可能是用户的无心的行为,但是密码确实又没错,针对这样的行为,开发者应该要判断输入值的前后是否有空白符、换行符、制表符这样明显的无意义的输入值。

jQuery.trim()函数用于去除字符串两端的空白字符

这个函数很简单,没有多余的参数用法

需要注意:

1.移除字符串开始和结尾处的所有换行符,空格(包括连续的空格)和制表符(tab)
2.如果这些空白字符在字符串中间时,它们将被保留,不会被移除
<script type="text/javascript">
    $("#exec1").click(function() {
        alert("值的长度:" + $("#results1").val().length)
    });

    $("#exec2").click(function() {
         alert("值的长度:" + $.trim($("#results2").val()).length)
    });
    </script>

jQuery中DOM元素的获取get方法

jQuery是一个合集对象,如果需要单独操作合集中的的某一个元素,可以通过.get()方法获取到

以下有3个a元素结构:

<a>1</a>
<a>2</a>
<a>3</a>

通过jQuery获取所有的a元素合集$("a"),如果想进一步在合集中找到第二2个dom元素单独处理,可以通过get方法

语法:

.get( [index ] )

注意2点

1.get方法是获取的dom对象,也就是通过document.getElementById获取的对象
2.get方法是从0开始索引

所以第二个a元素的查找: $(a).get(1)

负索引值参数

get方法还可以从后往前索引,传递一个负索引值,注意的负值的索引起始值是-1

同样是找到第二元素,可以传递 $(a).get(-2)

  <script type="text/javascript">
    $("#exec").click(function() {
        var v = $("#animation").val();
        var $aaron = $("#aaron a");

        //通过get找到第二个a元素,并修改蓝色字体
        if (v == "1") {
           $aaron.get(1).style.color = "blue"
        } else if (v == "2") {
            //通过get找到最后一个a元素,并修改字体颜色
            $aaron.get(-1).style.color = "#8A2BE2"
        }
    });
    </script>

jQuery中DOM元素的获取index方法

get方法是通过已知的索引在合集中找到对应的元素。如果反过来,已知元素如何在合集中找到对应的索引呢?

.index()方法,从匹配的元素中搜索给定元素的索引值,从0开始计数。

语法:参数接受一个jQuery或者dom对象作为查找的条件

.index()
.index( selector )
.index( element )
1.如果不传递任何参数给 .index() 方法,则返回值就是jQuery对象中第一个元素相对于它同辈元素的位置
2.如果在一组元素上调用 .index() ,并且参数是一个DOM元素或jQuery对象, .index() 返回值就是传入的元素相对于原先集合的位置
3.如果参数是一个选择器, .index() 返回值就是原先元素相对于选择器匹配元素的位置。如果找不到匹配的元素,则 .index() 返回 -1

简单来说:

<ul>
    <a></a>
    <li id="test1">1</li>
    <li id="test2">2</li>
    <li id="test3">3</li>
</ul>

$("li").index() 没有传递参数,反正的结果是1,它的意思是返回同辈的排列循序,第一个li之前有a元素,同辈元素是a开始为0,所以li的开始索引是1

如果要快速找到第二个li在列表中的索引,可以通过如下2种方式处理

$("li").index(document.getElementById("test2")) //结果:1
$("li").index($("#test2"))  //结果:1
<script type="text/javascript">
    $("#exec").click(function() {
        var v = $("#animation").val();

        var $span = $("span");
        $span.empty();

        if (v == "1") {
            //找到第一个li的同辈节点中的索引位置
            $span.text($("li").index())
        } else if (v == "2") {

            //通过传递dom查找
            $span.text($("li").index(document.getElementById("test5")))

        } else if (v == "3") {
            //通过传递jQuery对象查找
            $span.text($("li").index($("#test6")))

        }
    });
    </script>
 

转载于:https://www.cnblogs.com/CaseyWei/p/9446307.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 2款jQuery图片自动切换常用广告代码 2. jquery+css五屏焦点图淡入淡出+圆形按钮切换广告图片代码 3. jQuery+CSS实用图片收缩与放大效果插件 4. jquery+div实现同时滑动切换的图文展示特效插件下载 5. jquery+div带动画按钮图片手动与自动切换的特效代码 6. jquery一页多用的飞飞图片幻灯插件演示 7. jquery仿flash产品图片多角度展示特效代码 8. jquery仿flash图片放大相册的插件代码(Zoomer Gallery)下载 9. jquery仿flash的图片幻灯片播放特效实例完整版 10. jquery仿LightBox图片盒子单击逐渐放大的图片展示的插件下载 11. jquery仿Lightbox的插件jQuery UI.ariaLightbox点击图片放大显示插件下载 12. jQuery仿动感flash自动滚动图片切换广告插件 13. jQuery仿新浪新闻图片浏览器(支持鼠标左右滚动控制图片切换) 14. jquery仿苏宁易购商城产品图片全方位展示功能 15. jquery制作漂亮按钮示例打包 16. jQuery动态切换网页背景的大块图片的导航栏代码 17. jquery图文排行混合互相切换效果(仿Vancl效果) 18. jQuery图片插件之鼠标放在图片上出现动态的hover效果插件 19. jQuery图片自动轮播淡入淡出的幻灯插件iFadeSlide 20. jQuery大气banner带时间线自动播放的焦点图轮番切换代码 21. jquery定时自动切换banner广告图片动画插件示例 22. jquery实现LightBox图片点击放大效果的图片盒子插件 23. jQuery实现slider图片滚动,单个滚动,成组滚动示例 24. jQuery实现产品图片循坏旋转的代码 25. jQuery实现动态图文分组排序切换源码 26. jQuery实现图片3D旋转特效插件 v1.1版本下载 27. jQuery实现图片3D立体感的前后轮番展示特效 28. jQuery实现图片取景器仿相机拍照功能的插件photoShoot 29. jQuery实现图片变色特效插件与实例下载如jquery图片变灰色 30. jquery实现图片可拖动展示的实例下载 31. jQuery实现拖动滚动条的缩略图排列插件下载 32. jQuery实现焦点图片Flash自动平滑渐变效果 33. jQuery实现鼠标移到链接提示显示图片功能插件 34. jquery实现鼠标经过链接放大图片特效代码 35. jquery实用Banner大图片横向切换效果 36. jquery实用产品图片展示动感切换效果源码 37. jquery平滑交换真彩色的图片逐渐变为黑白图像的代码 38. jquery异步加载图片的插件jqGalScroll下载 39. jquery微型相册插件Micro Image Gallery下载 40. jQuery把图片放大及变亮特效插件下载 41. jquery拖动滚动条控制图片滚动及图片放大特效的示例 42. jquery旋转式图片切换并带图片放大功能 43. jQuery漂亮网页右上角双层撕角广告代码 44. jquery漂亮网页布局综合定时器、切换间隔、滚动时间、滚动图片个数等示例 45. jQuery演示Ajax加载并显示图片的相片画廊实例 46. jQuery版Sexy Lightbox 2.3内容修饰框插件下载(支持HTML,flash,图片,视频等) 47. jquery版自动滚动图片动画特效插件可处理图片JSON数据源 48. jQuery电子商务网站产品展示插件之仿苏宁易购商城产品图展示特效 49. jquery相册播放器插件实现无序图片列表转换成有序并播放 50. jQuery移动网页背景图浮云流水特效 51. jquery简单控制上下、左右四方向滚动的特效插件下载 52. jquery缩略图滚动特效之带小图的网页元素滚动轮播插件 53. jquery网站顶部滑动广告插件 54. jquery自动播放图片滚动漂浮式效果的示例 55. jquery贴图旋转及缩放插件下载 56. jquery门户网站首页全屏弹性伸缩至小屏的广告代码(非常实用) 57. jQuery黑色动感Ajax无刷新动态分组图片效果代码 58. jquery黑色风格左右带箭头的图片浏览控制插件下载 59. jQuery鼠标滑动图片显示标题与简介的滑动动感特效代码 60. jQuery鼠标移上小图显示大缩略图功能 61. js仿淘宝网鼠标经过缩略图放大图片效果的jQuery Fancy Hover Effect完整实例 62. Supersized jQuery全屏相册图片自动切换插件 63. [荐]jquery仿flash漂亮横向图片滚动效果完整版(兼容性非常好) 64. [荐]jQuery焦点图幻灯切换插件Tab选项卡(soChange 1.4)下载 65. 一款jQuery仿flash放大图片的相册插件 66. 一款jQuery仿苹果mac os系统经典菜单效果源码 67. 一款jQuery动感左右滚动图片切换插件带缩图一起滚动 68. 一款jQuery实现banner图片轮显、广告切换、图片幻灯插件EasySlide下载 69. 一款jquery实现图片放大插件imgBox下载 70. 一款jQuery实现漂亮精美相册插件源码 71. 一款jQuery左右箭头控制大图滚动切换的代码 72. 一款jquery常用产品图片放大效果插件下载 73. 一款jQuery插件slide幻灯片切换图片宽高自适应 74. 一款jQuery漂亮淡出淡入焦点大图切换源码 75. 一款jquery缩略图商品切换放大展示功能插件 76. 一款使用jQuery左右控制横向图片滚动的代码 77. 一款基于jquery定时图片切换代码下载 78. 一款实用经典jQuery图片切换展示插件下载 79. 下载jQuery动感广告图片翻转插件(PictureRoll)示例版 80. 下载JQuery淡入淡出效果插件InnerFade 81. 下载jquery走马灯效果图片连续滚动的实例 82. 几种简单实用jQuery焦点图片自动切换效果 83. 分享jquery仿LightBox动感多样式图片放大插件zoomimage下载 84. 分享jquery仿当当网店铺图片轮番切换(同时显示图片说明)代码下载 85. 分享一款jQuery thumbnail惟美的图片Tip提示效果 86. 分享一款jquery仿lightbox无刷新图片显示插件PrettyPhoto下载 87. 分享多款jQuery图片预加载切换效果(上下滚动、淡入淡出渐变等) 88. 动感十足jquery仿腾讯图片滚动浏览功能(带左右控制按钮)MovingBoxes插件下载 89. 参考JQZOOM插件使用jQuery仿京东网产品展示切换及放大效果的代码 90. 又一款jquery自动轮播焦点图+内容的广告代码 91. 又一款非常不错的jQuery+div大气新闻图片切换插件代码(AnythingSlider)下载 92. 基于jQuery带时间轴宽屏图片切换源码 93. 基于jQuery的横向无缝图片滚动插件jcarousel 94. 实用jquery焦点图源码2 95. 常用jQuery新闻焦点图片切换效果插件 96. 强大jQuery实现3D文字三维旋转效果代码下载 97. 很帅的jquery焦点图切换源码可用于产品大图展示 98. 很帅的jQuery鼠标移动预览图展示+简介内容展示特效代码 99. 打包jQuery实用3个焦点图切换自动切换特效的代码 100. 打包jquery拖动条拖动图片缩略图及放大图片效果插件(翻版thickbox插件)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值