2013-04-08 99 views
-1

我有两个html页面,index.html,然后photo.html使用.load()方法停止其他jquery方法的工作?

的index.html

<html> 
<body> 
    <div id="menu"> 
    <ul> 
    <li><p id="about">ABOUT</p></li> 
    <li><p id="work">WORK</p></li> 
    <li><p id="photo">PHOTO</p></li> 
    <li><p id="mail">MAIL ME</p></li> 
    </ul> 
    </div> 
    <div id="photo-container"> 
    </div> 
</body> 
</html> 

和photo.html

<html> 
<html> 
<body> 
    <div class="about12"> 
    <h4>a-design</h4> 
    <p> 
    //some text  
    </p> 
    </div> 
</body> 
</html> 

和JavaScript文件:

$(document).ready(function(){ 

    $('#photo').click(function() { 
     $("#container").load("photo.html .about12"); 
     $('#photo-container h4').fadeout(5000); 
      $('#photo-container p').animate({top: '150px'},1500); 
    }); 
}); 

当我点击照片ID时,函数.load()是否有效,但事后,没有其他的jQuery功能可以工作。为什么是这样?

此外,另一个问题是.load()是完成这项工作的最佳方法:加载,淡出和动画,还是有更好的方法?

+0

请包括所有你使用的是JavaScript库。你只使用jQuery?或者jQuery ui呢?这将使人们更容易发现问题所在。 – drozzy 2013-04-08 19:55:48

+0

我使用jQuery和jQuery的用户界面,但问题解决了..但无论如何感谢 – 2013-04-09 14:37:10

回答

1

AJAX意味着异步加载。此部分:

$('#photo-container h4').fadeout(5000); 
$('#photo-container p').animate({top: '150px'},1500); 

甚至在装载照片容器之前甚至会发生火灾。你需要把它作为一个回调

$('#photo').click(function() { 
    $("#container").load("photo.html .about12", function() { 
     $('#photo-container h4').fadeout(5000); 
     $('#photo-container p').animate({top: '150px'},1500); 
    }); 
}); 
+0

谢谢你这是非常有用的...... – 2013-04-08 17:30:27

0

使用jQuery .live方法可能是你在找什么。

$("#photo").live("click", function(){ ... }); 
+0

现场功能已弃用。 – ZippyV 2013-04-08 18:09:05

+0

我想我在一段时间内没有碰过jQuery – drunkenRabbit 2013-04-08 18:58:43

0

AJAX负荷asynchronus ..你需要做的东西对数据的成功回调函数。 使用find()获取动态添加的内容元素。你只需要通过URL负载

的第一选择尝试这种

$('#photo').click(function() { 
    $("#container").load("photo.html",function(data){ 
     $(data).find('#photo-container h4').fadeout(5000); 
     $(data).find('#photo-container p').animate({top: '150px'},1500); 
    }); 

});