我用$('.audio').each(function(){...}来给使class="audio"的元素指向一个函数。在页面footer加载了包含此函数的$(document).ready(function(),测试没有问题。但ajax加载的内容包含了class="audio"的内容却失效了。是以为ajax加载的内容是后来加进来的,需要重新初始化的问题么?  求教如何写初始化代码?

解决方案 »

  1.   

    是的,ajax加载内容是在$(document).ready()之后的操作,这个时候给绑定函数的时候,找到的元素集合中还不包括ajax加载的内容,所以原来的没有问题,后加载的就没有绑定,所以你需要在ajax请求成功之后重新绑定,也就是执行$('.audio').each(function(){...}
      

  2.   

    用监听绑定事件
    $("....").live("click",function(){...})
      

  3.   

    绑定事件
    或者在 ajax加载中 引用 事件比如:$.ajax({
        ...
        ...
        
       reee();
    });function reee(){
        $('.audio').each(function(){...};
    }
      

  4.   

    up 1楼在 ajax 的回调函数中 重新调用 
    $('.audio').each(function(){...}
    即可
      

  5.   

    我试过了,我在
    $.ajax({
      ...
      ...
       complete: function (XMLHttpRequest, textStatus) 
    {
    $('.audio').each(function(){...};
    }
    重新调用了这个函数,这样虽然通过ajax加载的内容包含'.audio'标签的执行了对应函数,但是其他的内容那些不是通过ajax加载的之前就存在的内容也再一次执行了一次函数。我也想用$("....").live("click",function(){...}),但问题是我这个是对div里含class=audio的元素执行插入flash播放器的功能,没有点击事件。貌似live不支持。
      

  6.   

    我记得Jquery里的ajax有个特点:当ajax返回的页面成功后会自动被请求页的样式渲染,如果请求页和被请求页都有相同的样式类,那么就会由请求页覆盖