jQuery不喜欢.on和.append?

时间:2014-02-12 18:56:21

标签: javascript jquery ajax

我有一个奇怪的问题。 我目前正在使用PHP,AJAX和MySQL加载帖子。代码结构本身如下所示:

我的代码结构

--- main.js ---

$(window).load(function(){
     initAjax();
});

--- ajax.js ---

function initAjax(){

//   Toggles a navigation

     $(document).on('click', '.btn.open', function(){
         ... toggles a window ...
     });

//   Add new posts

     $(document).on('click', '.btn.refresh', function(){
         $.ajax({
              ... ajax stuff ...,
              success: function(html){
                   // Show new posts
                   $('.post_container').prepend(html);
              }
         });
     });
}

那么问题是什么?

当我添加新帖子时,他们会显示,但我无法点击.btn.open - 不应该'on()'修复此问题吗?当我转到谷歌Chrome控制台时。

有人知道解决问题的潜在方法吗?

修改

  1. 附加的帖子与默认加载的帖子相同!
  2. '。btn.open'存在(div with class =“btn open”)
  3. 我正在使用jQuery v2.0.3(所以.on应该工作! .live和.delegate被.on!取代)
  4. 删除了由损坏的Chrome扩展程序创建的错误消息=无更改。
  5. 创建了一个显示问题的.gif文件:http://d.pr/i/cJB3
  6. 已修复! @ cmorrissey通过将$(文档)替换为$('body')找到了一个小解决方案

    BUT

  7. 这个修补程序似乎不是一个完美的解决方案,因为$(文档)通常必须工作!由于我想要 clean 代码,我将完全尝试@ PothercaShort, Self Contained, Correct, Example方法,我可能会以这种方式找到解决方案。的由于

1 个答案:

答案 0 :(得分:1)

您需要使用'body'document.body代替document

    $('body').on('click', '.btn.refresh', function(){
         $.ajax({
              ... ajax stuff ...,
              success: function(html){
                   // Show new posts
                   $('.post_container').prepend(html);
              }
         });
     });

原因:向正文添加内容不会冒泡到文档级别(http://bugs.jquery.com/ticket/11621),看起来您也可以使用window