我需要一个iframe来淡出旧页面,然后当用户点击其中一个链接时我会淡入新页面而我无法让代码生效。只是想知道你是否能看到我出错的地方。
<div id="menubar1">
<a href="link1" target="iframe1"> link 1 </a>
<a href="link 2" target="iframe1"> link 2 </a>
<a href="link 3" target="iframe1"> link 3 </a>
<a href="link 4" target="iframe1"> link 4 </a>
</div>
<iframe id="iframe1" name="iframe1" src="homepage.html" frameborder="0"></iframe>
<script>
$("#menubar1 a").click(function() {
$("#iframe1").FadeOut("slow");
$("#iframe1").FadeIn("slow");
});
</script>
答案 0 :(得分:4)
这种方式应该有效。
$("#menubar1 a").click(function(e) {
e.preventDefault();
var src = $(this).attr('href');
$('#iframe1').fadeOut(1000,function(){
$('#iframe1').attr('src',src );
$('#iframe1').fadeIn(1000);
});
});
您现在可以删除目标属性,因为我们已经通过jQuery处理了它。
<a href="link1"> link 1 </a>
我在jsfiddle上测试了这个,看它是如何工作的。 jsFiddle
然后我注意到内容完全加载后iframe
闪烁。所以我添加了一个load()
函数来修复闪烁,它运行得很好。见jsFiddle
$("#menubar1 a").click(function(e) {
e.preventDefault();
var src = $(this).attr('href');
$('#iframe1').fadeOut(1000,function(){
$('#iframe1').attr('src',src ).load(function(){
$(this).fadeIn(1000);
});
});
});
答案 1 :(得分:-2)
只是语法错误,大写.fadeOut(你写了.FadeOut)。
$("#menubar1 a").click(function() {
$("#iframe1").fadeOut("slow");
$("#iframe1").fadeIn("slow");
});
虽然我建议您执行以下操作:
<html>
<body>
<div id="menubar1">
<a href="#" id="link1"> link 1 </a>
<a href="#" id="link 2"> link 2 </a>
<a href="#" id="link 3"> link 3 </a>
<a href="#" id="link 4"> link 4 </a>
</div>
<iframe id="iframe1" name="iframe1" src="homepage.html" frameborder="0" >
</iframe>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script>
$("#menubar1 a").click(function() {
var linkId = this.id; // id of clicked a element
$("#iframe1").fadeOut("slow", function() {; // fade out iframe
document.getElementById("iframe1").src = linkId; // on completion of fade out - change iframe src attribute
$("#iframe1").fadeIn("slow"); //fade in iframe
});
});
</script>
</body>
</html>
这样,iframe的内容在fadeOut之前不会改变。