javascript - .each(function() 中包含多个函数 - jQuery

标签 javascript jquery each expressionengine vivus

尝试将多个函数转换为 jQuery 中的一个 .each 函数,但出现空白页。知道我错过了什么吗?

此代码运行正常:

    new Vivus('svg-0', {duration: 200}, function(){
        $('.svg-animation .svg-1').css( "opacity", "0");
        $('.svg-animation .illustration-1').css( "opacity", "1");
    });

    new Vivus('svg-1', {duration: 200}, function(){
        $('.svg-animation .svg-2').css( "opacity", "0");
        $('.svg-animation .illustration-2').css( "opacity", "1");
    });


    new Vivus('svg-2', {duration: 200}, function(){
        $('.svg-animation .svg-3').css( "opacity", "0");
        $('.svg-animation .illustration-3').css( "opacity", "1");
    });

    new Vivus('svg-3', {duration: 200}, function(){
        $('.svg-animation .svg-4').css( "opacity", "0");
        $('.svg-animation .illustration-4').css( "opacity", "1");
    });

这是我尝试构建的每个函数:

$('.drawings').each(function (index, value) {
    var svgs = ($(this).find('#svg-' + index));
    //console.log(svgs);

    new Vivus(svgs, {duration: 200}, function(){
        $('.svg-animation .svg-' + index).css( "opacity", "0");
        $('.svg-animation .illustration-' + index).css( "opacity", "1");
    }); 
});

如果需要,这里是 HTML...括号是 ExpressionEngine 中使用的代码:

<div class="svg-animation">
    <div class="drawings mac">
       <svg id="svg-{blocks:index:of:type}" class="svg svg-{blocks:index:of:type}" style="max-width: {svg_max_width}" xmlns="http://www.w3.org/2000/svg" viewBox="{svg_view_box}">
            <title>{svg_title}</title>
            {svg_code}
        </svg>
        <img class="illustration illustration-{blocks:index:of:type}" style="max-width: {svg_max_width}" src="/assets/src_assets/images/step-1-img.png">
    </div>
</div>

最佳答案

这应该有效。

for (var i=0; i<4; i++) {
    new Vivus('svg-'+i, {duration: 200}, function(){
        $('.svg-animation .svg-'+(i+1)).css( "opacity", "0");
        $('.svg-animation .illustration-'+(i+1)).css( "opacity", "1");
    });
}

否则,根据您的标记片段,这是一个动态变体:

$('.drawings .svg').each( function() {

    var theID = $(this).attr('id').replace("svg-", "");
    var nextID = theID + 1;


    new Vivus('svg-'+theID, {duration: 200}, function(){
        $('.svg-animation .svg-'+ nextID).css( "opacity", "0");
        $('.svg-animation .illustration-'+ nextID).css( "opacity", "1");
    });

}

关于javascript - .each(function() 中包含多个函数 - jQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46368339/

相关文章:

javascript - 如何根据N :N relationship 检索SOAP中的相关记录

javascript - 内容搜索字段值也有一个字段

javascript - jQuery.data() 适用于 Mac OS WebKit,但不适用于 iPhone OS?

javascript - 每个中的 jQuery 变量范围

javascript - each() 函数中的多个 ajax 调用.. 然后在所有调用完成后执行某些操作?

javascript - 在javascript中从数组中获取随机X个项目

javascript - 如何使用javascript从IE中的iframe中删除边框

javascript - 获取对象属性的最大值

jquery - 如何在不重新加载页面(AJAX)的情况下更新 django 模板变量?

javascript - 在脚本和 css 中,符号/* */是否会像空格一样增加文件大小?