gpt4 book ai didi

javascript - 更改 AJAX 加载内容的元素

转载 作者:行者123 更新时间:2023-11-28 03:53:08 24 4
gpt4 key购买 nike

我有一个关于使用 Ajax 传递信息的问题。我有一个元素,其中包含一个包含多个部分的主页。每个部分都使用 ajax 加载。主页有一个图片库,可以使用加号和减号箭头浏览。gallery.html 页面中的所有图片都以较小的尺寸显示。为了节省时间,我不在这里重现 css。如果你查看 eh js 文件,你会看到主页有一个简单的功能,可以更改图像的来源以便浏览。

我想做的是,在图库页面上,当您点击图片时,不仅会加载主页,还会加载您点击的图片。

我的功能

$( document ).on('click', '.littleImages', function(e){
var imageSource = $(this).attr('src');
$( '#container' ).remove();
$( '#content').load('index.html' + ' #content').hide().fadeIn('slow');
$( '#front' ).attr('src', imageSource);
});
});

不工作。这是我第一次尝试用 ajax 做这样的事情。我认为您可以通过 ajax 请求传递信息,但不太确定如何去做。我该怎么做?谢谢。

index.html

<!DOCTYPE html>
<html lang="en-US">

<head>

<meta charset="UTF-8">
<title>Photography</title>
<link rel="stylesheet" type="text/css" href="styles.css">

</head>

<body>

<div id="header">
<div id="title"><h1>TITLE<span id="subtitle">SUBTITLE</span></h1></div>
<nav class="cf" id="menu">
<ul>
<li><a href="about.html">ABOUT</a></li>
<li><a href="gallery.html">GALLERY</a></li>
<li><a href="bio.html">BIO</a></li>
<li><a href="contact.html">CONTACT</a></li>
<li><a href="index.html" class="current">HOME</a></li>
</ul>
</nav>
</div>

<section id="content">

<div id="container">

<div id="imagewrap">
<img src="Images/Images/Image1.jpg" id="front" />

<div id="previous" class="buttons"></div>

<div id="next" class="buttons"></div>
</div>

</div> <!-- end of content -->

</section> <!-- end of container -->


<div id="footer">
</div>

<script type="text/javascript" src="jquery-3.1.0.min.js"></script>
<script type="text/javascript" src="JavaScript.js"></script>

</body>

</html>

画廊.html

<!DOCTYPE html>
<html lang="en-US">

<head>

<meta charset="UTF-8">
<title>Photography</title>
<link rel="stylesheet" type="text/css" href="styles.css">

</head>

<body>

<section id="content">

<div id="container">

<div id="gallery" class="sections">
<img src="Images/Image1.jpg" class="littleImages">
<img src="Images/Image2.jpg" class="littleImages">
<img src="Images/Image3.jpg" class="littleImages">
<img src="Images/Image4.jpg" class="littleImages">
<img src="Images/Image5.jpg" class="littleImages">
<img src="Images/Image6.jpg" class="littleImages">
<img src="Images/Image7.jpg" class="littleImages">
<img src="Images/Image8.jpg" class="littleImages">
<img src="Images/Image9.jpg" class="littleImages">
<img src="Images/Image10.jpg" class="littleImages">
<img src="Images/Image11.jpg" class="littleImages">
<img src="Images/Image12.jpg" class="littleImages">
<img src="Images/Image13.jpg" class="littleImages">
<img src="Images/Image14.jpg" class="littleImages">
<img src="Images/Image15.jpg" class="littleImages">
<img src="Images/Image16.jpg" class="littleImages">
<img src="Images/Image17.jpg" class="littleImages">
<img src="Images/Image18.jpg" class="littleImages">
<img src="Images/Image19.jpg" class="littleImages">
<img src="Images/Image20.jpg" class="littleImages">

</div>

</div> <!-- end of content -->

</section> <!-- end of container -->

</body>

</html>

.js

$( document ).ready(function() {

$( "#imagewrap" ).hide();

function showPicture() {
$( "#imagewrap" ).fadeIn('slow');
}

setTimeout(showPicture, 2000);

$( "nav a" ).on('click', function(e){
e.preventDefault();
var url = this.href;
$( "nav a.current" ).removeClass("current");
$(this).addClass("current");
$( '#container' ).remove();
$( '#content').load(url + ' #content').hide().fadeIn('slow');
});


counter = 1;
$( '.buttons' ).on('click', function(e){
if (counter < 1 || counter > 5) {return false;}
var id = e.target.id;
if (id == "next" && counter < 5){counter++;
} else if (id == "previous" && counter > 1){counter--;}
getImage();
});
getImage = function() {
document.getElementById("front").src = "Images/Images/Image" + counter + ".jpg";
}

$( document ).on('click', '.littleImages', function(e){
var imageSource = $(this).attr('src');
$( '#container' ).remove();
$( '#content').load('index.html' + ' #content').hide().fadeIn('slow');
$( '#front' ).attr('src', imageSource);
});
});

最佳答案

您正在尝试访问尚未加载到 DOM 中的元素。顾名思义,AJAX 是“异步的”。因此,您试图在 load() 完成之前在 front 元素上设置源代码。使用完成回调来解决这个问题。

$( '#content').load('index.html' + ' #content', function(){
$( '#front' ).attr('src', imageSource);
}).hide().fadeIn('slow');

关于javascript - 更改 AJAX 加载内容的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43621958/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com