我想做什么: 使用单个容器加载图像。
现在是这样的: 我有十一(11)个HTML标记容器,每个容器都有自己的div。 每个容器可容纳4张图像(2张图像并排顶部和底部) 当点击锚标签中的链接时,div与图像淡入。
jQquery手风琴用于导航的典型例子是:
<li>
<a class="head" href="#">commercial/hospitality</a>
<ul>
<li><a href="#" projectName="project1" projectType="hospitality1"
image1="images/testImage1.jpg"
image2="images/testImage2.jpg"
image3="images/testImage3.jpg"
image4="images/testImage4.jpg">hospitality project number 1</a>
</li>
<li><a href="#" projectName="project2" projectType="hospitality2"
image1="images/testImage1.jpg"
image2="images/testImage2.jpg"
image3="images/testImage3.jpg"
image4="images/testImage4.jpg">hospitality project number 2</a>
</li>
<li><a href="#" projectName="project3" projectType="hospitality3"
image1="images/testImage1.jpg"
image2="images/testImage2.jpg"
image3="images/testImage3.jpg"
image4="images/testImage4.jpg">hospitality project number 3</a>
</li>
</ul>
</li>
用于图像插入的典型<div>
容器目前有11个:
<div id="hospitality1" class="current">
<div id="image1"><img src="images/testImage.jpg"/></div>
<div id="image2"><img src="images/testImage.jpg"/></div>
<div id="image3"><img src="images/testImage.jpg"/></div>
<div id="image4"><img src="images/testImage.jpg"/></div>
</div>
这是我现在使用的代码,它确实有用,但有更好的方法 这样做只会重复使用一个div容器来加载图像吗?
$(document).ready(function(){
$('#navigation a').click(function (selected) {
var projectType = $(this).attr("projectType"); //projectType
var projectName = $(this).attr("projectName"); //projectName
var image1 = $(this).attr("image1"); //anchor tag for image number 1
var image2 = $(this).attr("image2"); //anchor tag for image number 2
var image3 = $(this).attr("image3"); //anchor tag for image number 3
var image4 = $(this).attr("image4"); //anchor tag for image number 4
console.log(projectType); //returns type of project
console.log(projectName); //returns name of project
console.log(image1); //returns 1st image
console.log(image2); //returns 2nd image
console.log(image3); //returns 3rd image
console.log(image4); //returns 4th image
$(function() {
$(".current").hide(); // hides previous selected image
$("#" + projectType ).fadeIn("normal").addClass("current");
});
});
尽可能地看到标记变得非常大 任何帮助表示赞赏 ussteele
答案 0 :(得分:0)
你可以用jQuery做这样的事情:
$((function(){
$('#navigation a').click(function (selected) {
$("#imgDiv").hide(); //Hide the div
$("#projectName").text($(this).attr("projectName")); //Set name
$("#projectType").text($(this).attr("projectType")); //Set type
for(var i = 1; i<=4;i++) { //Replace Images
$("#image" + i).attr("src", $(this).attr("image" + i);
}
$("#imgDiv").fadeIn("normal"); //Fade back in, only one - no need for current
});
});
将此html用于您的单个div:
<div id="imgDiv">
<div id="image1"><img src="images/testImage.jpg"/></div>
<div id="image2"><img src="images/testImage.jpg"/></div>
<div id="image3"><img src="images/testImage.jpg"/></div>
<div id="image4"><img src="images/testImage.jpg"/></div>
<span id="projectName"></span><span id="projectType"></span>
</div>
如果我误解了,请评论并纠正,我们绝对可以用一个div来完成这项工作:)