Ajax有助于加载内容

时间:2015-10-12 10:52:03

标签: javascript php jquery html ajax

您好我在使用此代码时遇到了问题(在js中名为ajax.js)

    $(function(){
      $("#loading").hide();

         $("ul#nav a").click(function(){
            page = "content/"+$(this).attr('href')

            $("#loading").ajaxStart(function(){
               $(this).show()
               })
            $("#loading").ajaxStop(function(){
               $(this).hide();

            })

            $(".content").load(page);
            return false;
         })
     })

首先在head division上的index.php中包含脚本

<script type="text/javascript" src="js/jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="js/ajax.js"></script>

在身体分割上,这是主菜单导航

<ul id="nav">
  <li><a href="page1.php">Here 1</a></li>
  <li><a href="page2.php">Here 2 </a></li>
</ul>

以下是加载内容的代码

<div class="content">
  <img src="imgs/ajax-loader.gif" width="16" height="16" alt="Loading..." id="loading" />
  <?php include('content/page1.php'); ?>
</div>

这段代码工作正常。但我的问题是在page1.php里面我得到了

<ul id="nav">
  <li><a href="page3.php">Here 3 </a></li>
  <li><a href="page4.php">Here 4 </a></li>
</ul>

并且整个系统无法正常工作。 如果我使用主导航栏中的链接,它可以,但如果我尝试使用任何其他页面的链接,它无法正常工作。 我试图在每个page.php上加载ajax脚本,但仍然无法正常工作。 有什么想法吗?

2 个答案:

答案 0 :(得分:2)

确定click事件绑定的问题。

您需要在nav a上绑定click事件,因为page1.php具有导航菜单,因此使用ajax加载内容但是新菜单项上没有click事件。

因此,创建名为BindClickEvent的新函数

StringBuilder[] names = { new StringBuilder().append ("Peter"), new StringBuilder().append ("Paul"), new StringBuilder().append ("Mary") };
List<Runnable> runners = new ArrayList<>();

for (StringBuilder name : names){
  runners.add(() -> System.out.println(name));
  name.setLength (0);
  name.append ("Mary");
}

for (int k=0; k<runners.size(); k++){
  runners.get(k).run();
}

在页面加载和page1.php文件内容中调用Mary Mary Mary 函数 所以每当你在ajax调用响应中添加/删除菜单调用function BindClickEvent(){ $("ul#nav a").unbind( "click" ); $("ul#nav a").bind("click", function(){ page = "content/"+$(this).attr('href') $("#loading").ajaxStart(function(){ $(this).show() }) $("#loading").ajaxStop(function(){ $(this).hide(); }) $(".content").load(page); return false; }) } 时。

答案 1 :(得分:0)

这是委托功能的问题, 只需替换

$("ul#nav a").click(function(){

$(document).on('click', 'ul#nav a', function(){

你的问题将得到解决:)