我想知道我是否可以将其分解为更少的代码。
我将slidetoggle设置为页面的4个不同部分,每个div都有自己的id。
我希望它可以减少到几行代码,因为每个div具有相同的slideToggle速度200。
以下是代码:
$(document).ready(function() {
$('#our-future-intro-slide').click(function() {
//$(".our-future-intro").delay(2400).slideDown(3600);
$(".our-future-intro").slideToggle(200);
});
$('#strategic-planning-click').click(function() {
$("#strategic-planning").slideToggle(200);
});
$('#student-learning-click').click(function() {
$("#student-learning").slideToggle(200);
});
$('#institutional-assessment-click').click(function() {
$("#institutional-assessment").slideToggle(200);
});
});
答案 0 :(得分:8)
您可以在选择器中放置多个ID,以逗号分隔。然后,只需从已点击的元素的ID中删除-click
或-slide
。
$(document).ready(function() {
$('#strategic-planning-click,#student-learning-click,#institutional-assessment-click,#our-future-intro-slide').click(function() {
var id = this.id.replace(/-click|-slide/, '');
$("#" + id).slideToggle(200);
});
});
修改强>
注意 @Ben Blank ,.our-future-intro
是一个类,而不是ID。如果您不能使用ID,则可以按如下方式修改上述代码:
$(document).ready(function() {
$('#strategic-planning-click,#student-learning-click,#institutional-assessment-click,#our-future-intro-slide').click(function() {
var selector = this.id.replace(/^(.+)(-click|-slide)$/, function(str,p1,p2) { return (p2 == '-click') ? '#' + p1 : '.' + p1; })
$(selector).slideToggle(200);
});
});
修改强>
根据您提供的代码示例,另一种选择是:
请注意,它依赖于您的HTML结构保持一致。
$(document).ready(function() {
$('#strategic-planning-click,#student-learning-click,#institutional-assessment-click,#our-future-intro-slide').click(function() {
$(this).parent().next().slideToggle(200);
});
});
答案 1 :(得分:0)
一种方法是将所有对象放在数组中并循环遍历绑定,因为您使用相同的代码:
var objects = [ "our-future-intro", "strategic-planning", "student-learning", "institutional-assessment" ];
$.each(objects, function()
{
$('#' + this + '-click').click(function() {
$("#" + this).slideToggle(200);
}) });
答案 2 :(得分:0)
我会依赖HTML结构来分配所有点击和滑动行为。只要该惯例成立,扩展这只是添加更多HTML的问题。
$("h1, h3").each(function(i, heading) {
$('a', this).click(function() {
heading.next('div').slideToggle(200);
});
});
假设内容结构类似于(基于您的pastie):
<div>
<h1><a href="..">one</a></h1>
<div>content for one</div>
<div>
<h3><a href="..">two</a></h3>
<div>content for two</div>
</div>
<div>
<h3><a href="..">three</a></h3>
<div>content for three</div>
</div>
...
</div>