首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >改进Jquery代码实现

改进Jquery代码实现
EN

Stack Overflow用户
提问于 2014-08-15 22:35:23
回答 4查看 37关注 0票数 0

我正在使用jquery,这段代码正在工作,但是我想改进它,因为我没有重复使用代码。有一种方式可以直接发送$("#btn_step1"),改变数字,哦,步骤?

代码语言:javascript
复制
$( document ).ready(function() {

    var activeDiv = $("#mod_formSteps-1");
    var body = $("html, body");

    activeDiv.siblings().hide();
    $("#btn_step1").on("click", function( event ){
        event.preventDefault();
        activeDiv.hide();
        activeDiv.next().show();
        activeDiv = $("#mod_formSteps-2");

        body.animate({scrollTop:0}, '500', 'swing');

    });
    $("#btn_step2").on("click", function( event ){
        event.preventDefault();
        activeDiv.hide();
        activeDiv.next().show();
        activeDiv = $("#mod_formSteps-3");

        body.animate({scrollTop:0}, '500', 'swing');
    });
    $("#btn_step3").on("click", function( event ){
        event.preventDefault();
        activeDiv.hide();
        activeDiv.next().show();
        activeDiv = $("#mod_formSteps-4");

        body.animate({scrollTop:0}, '500', 'swing');
    });
});
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-08-15 23:03:02

您可以使用属性从选择器开始执行类似的操作

代码语言:javascript
复制
// get all elements with id's that start with btn_step
$("[id^='btn_step']").on("click", function( event ){        
    activeDiv.hide();
    activeDiv.next().show();
    activeDiv = $("#mod_formSteps-" + (+this.id.replace('btn_step','') + 1));
    body.animate({scrollTop:0}, '500', 'swing');
});

或者给他们上类似的课

代码语言:javascript
复制
$(".theClass").on("click", function( event ){        
    activeDiv.hide();
    activeDiv.next().show();
    activeDiv = $("#mod_formSteps-" + (+this.id.replace('btn_step','') + 1));
    body.animate({scrollTop:0}, '500', 'swing');
});

更多地查看代码,实际上您可以这样做

代码语言:javascript
复制
$(".theClass").on("click", function( event ){
    activeDiv = activeDiv.hide().next().show();       
    body.animate({scrollTop:0}, '500', 'swing');
});
票数 1
EN

Stack Overflow用户

发布于 2014-08-15 22:38:10

您可以将类用于btn_steps而不是单个ID。使用类,您可以使用一个函数,即一旦单击.btn_step元素就会触发。

票数 0
EN

Stack Overflow用户

发布于 2014-08-15 22:43:04

唯一能改变的就是一个数字

代码语言:javascript
复制
$( document ).ready(function() {

    var activeDiv = $("#mod_formSteps-1"),
        body = $("html, body"),
        steps = 4,
        i = 0;


    activeDiv.siblings().hide();

    for (i; i < steps; i++) {
        var selector = "#btn_step" + i;

        $(selector).on("click", function( event ){
            event.preventDefault();
            activeDiv.hide();
            activeDiv.next().show();

            activeDiv = $("#mod_formSteps-" + (i + 1));

            body.animate({scrollTop:0}, '500', 'swing');
        })
    }
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25335167

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档