使用AJAX附加DIV内容 - 上一个/下一个

时间:2014-12-06 05:23:02

标签: javascript jquery html css ajax

所以我尝试做的是将HTML文档中的内容附加到我已经使用AJAX将内容加载到(来自同一文件)的DIV中。

当你点击"之前的"时,我试图这样做。和" next"按钮它加载上一个或下一个项目。

这是我的代码所在。

HTML (我将内容加载到#ajax中)

<div class="p-modal">
    <div id="p-controls">
        <a id="p-close" href="javascript:;">Close</a>
    </div>
    <div id="ajax"></div>
</div>

的jQuery

$(document).ready(function() {
  $('.p-load').on('click', function(e) {
    e.preventDefault();
    var href = $(this).attr('href');
    if ($('#ajax').is(':visible')) {
      $('#ajax').css({ display:'block' }).animate({ height:'auto' }).empty();
    }
    $('#ajax').css({ display:'block' }).animate({ height:'auto' },function() {
      $('#ajax').html('<img id="loader" src="images/loading.gif" width="48" height="48">');
      $('#loader').css({ border:'none', position:'absolute', top:'50%', left:'50%', margin:'-24px 0 0 -24px', boxShadow:'none' });
      $('#ajax').load('includes/projects.html ' + href, function() {
        $('#ajax').hide().fadeIn('slow');
      });
    });
  });
});

DEMO(向下滚动到&#34;工作&#34;部分 - 如果您打开项目然后关闭它,它可以单独加载每个项目,但是当我在上面使用相同的代码时&#34; prev&#34;&#34; next&#34;在项目弹出窗口内触发,它没有做任何事情)

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:1)

在PREV和NEXT按钮链接上绑定点击事件。确保在页面加载和Ajax完成调用时执行此操作。它确实有效,我从萤火虫测试。

$('a.next,a.prev').on('click', function(e) {
  e.preventDefault();
  var href = $(this).attr('href');
  if ($('#ajax').is(':visible')) {
    $('#ajax').css({ display:'block' }).animate({ height:'auto' }).empty();
  }
  $('#ajax').css({ display:'block' }).animate({ height:'auto' },function() {
    $('#ajax').html('<img id="loader" src="images/loading.gif" width="48" height="48">');
    $('#loader').css({ border:'none', position:'absolute', top:'50%', left:'50%', margin:'-24px 0 0 -24px', boxShadow:'none' });
    $('#ajax').load('includes/projects.html ' + href, function() {
      $('#ajax').hide().fadeIn('slow');
    });
  });
});

答案 1 :(得分:0)

尝试这样的事情

$('document').on('click','.p-load' function(e) {
 // your code goes here.

});

原因:.p-load元素是动态加载的,在DOM加载中不存在。所以使用jquery delegate

参考:http://api.jquery.com/delegate/

我更喜欢使用DOM负载上存在的模态的父元素。所以我认为在你的情况下它将是.p-modal

 $('.p-modal').on('click','.p-load' function(e)