改进Jquery代码实现
Improve Jquery code implementation
我正在使用jquery,这段代码正在工作,但我想改进它,因为我没有重用代码。有一种方法可以动态地发送$("#btn_step1")
改变数字哦,步骤?
$( 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');
});
});
您可以使用属性start_with_selector
做类似的事情// 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');
});
或者给它们一个类似的类
$(".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');
});
仔细看看代码你可以这样做
$(".theClass").on("click", function( event ){
activeDiv = activeDiv.hide().next().show();
body.animate({scrollTop:0}, '500', 'swing');
});
您可以为btn_steps
使用类而不是单个id。使用类,您可以使用一个函数,一旦单击.btn_step
元素就会触发。
唯一改变的是数字所以像
$( 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');
})
}
});
您有很多代码重复,假设您对具有三个不同id
属性的元素执行相同的操作。考虑向每个元素btn_step1
、btn_step2
和btn_step3
添加一个类btn_step
。然后,在将click
函数分配给btn_step
类的每个元素时,跟踪您所处的step
:
$( document ).ready(function() {
var body = $("html, body");
$(".btn_step").each(function(index, element) {
element.click(function() {
var step = index + 1;
event.preventDefault();
var activeDiv = $("#mod_formSteps-" + step);
activeDiv.siblings().hide();
activeDiv.hide();
activeDiv.next().show();
activeDiv = $("#mod_formSteps-2");
body.animate({scrollTop:0}, '500', 'swing');
});
});
};
相关文章:
- PHP代码中实现的JavaScript |if语句不起作用
- 在 Javascript 中实现解耦代码/回调的正确方法是什么?
- Vim-当代码的文字字符串中有括号时,如何实现正确的缩进
- 在 php 代码中实现倒计时 js 倒计时
- Xpages:如何实现客户端JS代码的本地化
- 为什么我'我无法在HTML代码中实现filepicker.io
- 在实现基本Sharethis代码时指定了无效或非法的字符串
- Javascript承诺:它们能在用户空间代码中完全实现吗
- 在单元测试中实现逻辑,以缩短语法并提高测试代码的可重用性
- 无法实现 JavaScript 代码
- 如何实现自定义 Auth0 登录表单的服务器端代码
- 在文本区域中实现 HTML 语法突出显示以编写代码
- 在节点.js代码中实现回调的问题
- HTMLUnit是否包括一个功能性的[HTML5]画布2D实现,能够将图像数据渲染回Java代码
- 如何在此代码上实现 jQuery cookie
- 如何在javascript中实现html代码
- 谷歌跟踪代码管理器代码是否与在同一网站上实现的谷歌分析代码冲突
- 此代码中发生了什么,如果没有“with”关键字,以下内容的基本实现是什么
- 如何实现和运行这个jQuery函数,并在php代码中运行该函数
- 错误:未实现代码0