多个按钮打开相同的操作,但不同的 ID 容器
multiple Buttons opens up same action but different ID container
>我有多个按钮(目前有12个),所有按钮都有相同的ID和以下字母。每个BTN都会启动相同的函数,但不同的ID容器。这是 HTML:
<!----the btnS-->
<div id="projectA"></div>
<div id="projectB"></div>
<div id="projectC"></div>
<!--- The ContentS--->
<div class="content_projectA">this is content A!!!!
<div id="closeA">
<p class="text">close</p>
</div>
</div>
<div class="content_projectB">this is content B!!!!
<div id="closeB">
<p class="text">close</p>
</div>
</div>
<div class="content_projectC">this is content C!!!!
<div id="closeC">
<p class="text">close</p>
</div>
</div>
我有一个有效的代码,但它包含 500 多行......这是JS:
$(document).ready(function () {
$("#projectA").on("click", function () {
$(".content_projectA").slideDown();
$('html,body').animate({
scrollTop: 300
}, 200);
});
$("#closeA").on("click", function () {
$(".content_projectA").hide();
$('html,body').animate({
scrollTop: 200
}, 400);
});
});
//---- B -------//
$(document).ready(function () {
$("#projectB").on("click", function () {
$(".content_projectB").slideDown();
$('html,body').animate({
scrollTop: 300
}, 200);
});
$("#closeB").on("click", function () {
$(".content_projectB").hide();
$('html,body').animate({
scrollTop: 200
}, 400);
});
});
//---- C -------//
$(document).ready(function () {
$("#projectC").on("click", function () {
$(".content_projectC").slideDown();
$('html,body').animate({
scrollTop: 300
}, 200);
});
$("#closeC").on("click", function () {
$(".content_projectC").hide();
$('html,body').animate({
scrollTop: 200
}, 400);
});
});
我正在寻找一种方法来缩短它。
这是小提琴的代码 - http://jsfiddle.net/mirifarr/6j060L2k/
非常感谢
请看这里:
http://jsfiddle.net/6j060L2k/4/
<!----the btnS-->
<div class="project" id="projectA"></div>
<div class="project" id="projectB"></div>
<div class="project" id="projectC"></div>
<!--- The ContentS--->
<div class="content_projectA">this is content A!!!!
<div id="closeA">
<p id="A" class="close text">close</p>
</div>
</div>
<div class="content_projectB">this is content B!!!!
<div id="closeB">
<p id="B" class="close text">close</p>
</div>
</div>
<div class="content_projectC">this is content C!!!!
<div id="closeC">
<p id="C" class=" close text">close</p>
</div>
</div>
.JS:
$(document).ready(function () {
$(".project").on("click", function () {
$(".content_"+$(this).attr('id')).slideDown();
$('html,body').animate({
scrollTop: 300
}, 200);
});
$(".close").on("click", function () {
//$(".content_projectA").hide();
$(".content_project"+$(this).attr('id')).hide();
$('html,body').animate({
scrollTop: 200
}, 400);
});
});
使用以下 Jquery 选择器
选择器开启开始于
并更新您的JS代码,例如:
$(document).ready(function () {
//// Project
$("[id^='project']").click(function () {
var char = $(this).attr('id').substring(7);
$(".content_project" + char).slideDown();
$('html,body').animate({
scrollTop: 300
}, 200);
});
///// Close Div
$("[id^='close']").click(function () {
var char = $(this).attr('id').substring(5);
$(".content_project" + char).hide();
$('html,body').animate({
scrollTop: 200
}, 400);
});
});
检查更新的小提琴
使用 jQuery 开头,选择器 ^
。检索单击的div 的最后一个字符,并用于滚动到目标div。
$("[id^=project]").on("click", function () {
var id = this.id,
letter = id.substr(id.length - 1);
});
使用letter
将div 与类 content_project
定位。对close
按钮/div 执行相同的操作。
小提琴看起来比下面的代码片段更好。
$(document).ready(function () {
$("[id^=project]").on("click", function () {
var id = this.id,
letter = id.substr(id.length - 1);
$(".content_project" + letter).slideDown();
$('html,body').animate({
scrollTop: 300
}, 200);
});
$("[id^=close]").on("click", function () {
var id = this.id,
letter = id.substr(id.length - 1);
$(".content_project" + letter).hide();
$('html,body').animate({
scrollTop: 200
}, 400);
});
});
#projectA {
width: 200px;
height: 200px;
background-color: #0f36ca;
cursor: pointer;
}
#projectB {
width: 200px;
height: 200px;
background-color: #0ff5ca;
cursor: pointer;
}
#projectC {
width: 200px;
height: 200px;
background-color: #6f36ca;
cursor: pointer;
}
.content_projectA {
width: 100%;
height: 100%;
position: absolute;
background-color: #0f36ca;
display: none;
}
.content_projectB {
width: 100%;
height: 100%;
position: absolute;
background-color: #0ff5ca;
display: none;
}
.content_projectC {
width: 100%;
height: 100%;
position: absolute;
background-color: #6f36ca;
display: none;
}
.text {
color: #fff;
margin: auto;
}
#closeA {
width: 100px;
height: 100px;
position: absolute;
background-color: #000;
cursor: pointer;
}
#closeB {
width: 100px;
height: 100px;
background-color: #000;
cursor: pointer;
}
#closeC {
width: 100px;
height: 100px;
background-color: #000;
cursor: pointer;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<!----the btnS-->
<div id="projectA"></div>
<div id="projectB"></div>
<div id="projectC"></div>
<!--- The ContentS--->
<div class="content_projectA">this is content A!!!!
<div id="closeA">
<p class="text">close</p>
</div>
</div>
<div class="content_projectB">this is content B!!!!
<div id="closeB">
<p class="text">close</p>
</div>
</div>
<div class="content_projectC">this is content C!!!!
<div id="closeC">
<p class="text">close</p>
</div>
</div>
好吧,我没有更改 CSS,所以我不会再次发布它。
.js:
function openContents(classChar) {
//this don't need to be inside an onclick event because this event is already triggered when accessing this function
$(".content_project"+classChar).slideDown();
$('html,body').animate({
scrollTop: 300
}, 200);
//this one continues to bind the event to the close div
$("#close"+classChar).on("click", function () {
$(".content_project"+classChar).hide();
$('html,body').animate({
scrollTop: 200
}, 400);
});
}
//on document ready, execute init()
function init() {
/*
* What I did here was bind a click event to all three divs, using a class to identify them, instead of picking one by one.
* Then store id value of clicked div in a variable and sending the last char as parameter to openContents function.
*/
$(".projects").on("click",function() {
var idValue = $(this).attr('id');
openContents(idValue.substr(idValue.length-1));
});
}
$(document).ready(init);
html(刚刚添加的类):
<!----the btnS-->
<div id="projectA" class="projects"></div>
<div id="projectB" class="projects"></div>
<div id="projectC" class="projects"></div>
<!--- The ContentS--->
<div class="content_projectA">this is content A!!!!
<div id="closeA">
<p class="text">close</p>
</div>
</div>
<div class="content_projectB">this is content B!!!!
<div id="closeB">
<p class="text">close</p>
</div>
</div>
<div class="content_projectC">this is content C!!!!
<div id="closeC">
<p class="text">close</p>
</div>
</div>
http://jsfiddle.net/6j060L2k/9/
相关文章:
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- difference between '$(<%= DDL.ID %>) & $('
- 调整窗口大小时,可拖动的对象会出现在容器外部
- 使用Javascript获取所选选项ID
- 根据id将json数组组合为一个json数组
- 根据元素和容器大小计算边距
- 将id为X的可拖动元素拖放到id为Y的容器
- 多个按钮打开相同的操作,但不同的 ID 容器
- 如何在谷歌跟踪代码管理器 noscript 标签中参数化容器 id
- 修改 mootools lazyload 以使用类作为容器而不是 id
- CRM 2011 在线 - 保存或退出错误消息“<函数>匿名(容器,脚本内容,id)”
- 获取占位符容器拖动的父id&滴
- e.target.id获胜't触发点击容器中的元素.children[i].onclick
- jQuery-如何在另一个容器DIV中找到ID的索引
- 如何根据容器中类似父元素的数量为子元素赋予不同的id
- 如何删除svg容器并将其内容放入组(例如id= g8)
- 如何获得javascript's容器的id
- 替换具有两个可能ID的容器
- 如何将Bootstrap数据容器设置为特定ID
- 在鼠标悬停或单击时关闭具有类(非id)的容器