【发布时间】:2017-11-22 00:04:39
【问题描述】:
我有一个页面,您可以在其中选择 2 张图片,当您单击其中一张时,div 的内容会发生变化。新内容还有 2 张图片,点击后会加载其他内容。我使用的是javascript,但脚本只加载一次,所以当我到达第二个内容时,它不再改变了。
我有 3 个文件:
Main.html - content1.html - content2.html - script.js
Main.html:
<div id="change">
<div id="rightside">
<img src="img.jpg" class="class1" id="water" alt="right choice">
</div>
<div id="leftside">
<img src="img2.jpg" class="class1" id="water2" alt="left choice">
</div>
</div>
<script type="text/javascript" src="../js/script.js"></script>
以下是类变更中将被替换的内容: content1.html:
<div id="rightside">
<img src="img3.jpg" class="class1" id="water3" alt="right choice">
</div>
<div id="leftside">
<img src="img4.jpg" class="class1" id="water4" alt="left choice">
</div>
这是我下次单击时要替换的内容: content2.html:
<div id="rightside">
<img src="img5.jpg" class="class1" id="water5" alt="right choice">
</div>
<div id="leftside">
<img src="img6.jpg" class="class1" id="water6" alt="left choice">
</div>
这是假设这样做的脚本:
window.onload = function() {
document.getElementById("water").onclick = function()
{
$('#change').load('content1.html');
};
document.getElementById("water3").onclick = function() {
$('#change').load('content2.html');
};
如果我点击 id water 的图片,它会替换为 content1,然后我点击 water3 的图片,没有任何反应
【问题讨论】:
-
问题是在onload中,`document.getElementById("water3")`不存在。
-
使用delegated event。这种方法将事件处理程序附加到将始终在页面上的元素,等待事件从动态内容中冒出,检查事件的目标并在它与选定的条件匹配时触发处理程序。虽然看起来好像你只是更新了
<img>元素的src,而不是替换了#change的所有内容。 -
是否有明确的规则将点击图片的id与新内容的url关联起来。如果是这样,整个事情都是微不足道的。
-
@hungerstar 这是因为我改变的方式比图像更多,这只是我所拥有的一个简短版本。
标签: javascript jquery html css