iframe Fade Out/In with jQuery

iframe Fade Out/In with jQuery

本文关键字:with jQuery In Fade Out iframe      更新时间:2023-09-26

我需要一个 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>

这种方式应该有效。

  $("#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上测试了这个,看看它是如何工作的。

然后我注意到内容完全加载后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);    
          });
      });
 });

只是大写为 .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 的内容在淡出之前不会更改。