链接不是';t在动态div中工作(使用jquery.load()加载)

链接不是';t在动态div中工作(使用jquery.load()加载),jquery,html,css,ajax,Jquery,Html,Css,Ajax,我的问题是,我在加载的div中有很多链接,加载后无法单击。 我看到一些类似的问题,但不明白如何在我的问题中使用它 我正在尝试制作一种lightbox效果(没有插件,只是简单地使用.load()将内容加载到一个div,除了加载的div内的链接之外,其他一切都可以工作 <div class="post"> <a class="layer" href="/post/123 #the_post>*"> </div> $('.layer').click(fu

我的问题是,我在加载的
div
中有很多链接,加载后无法单击。 我看到一些类似的问题,但不明白如何在我的问题中使用它

我正在尝试制作一种
lightbox
效果(没有插件,只是简单地使用.load()将内容加载到一个div,除了加载的div内的链接之外,其他一切都可以工作

<div class="post">
  <a class="layer" href="/post/123 #the_post>*">
</div>

$('.layer').click(function(e) {
      e.preventDefault();
      var path = $(this).attr('href');
      $('#overlay_content').load(path, function(){
          $(".media").each(function(){
              var medhei = $(this).height();
              $(this).css("line-height", medhei + 'px');
          });
      });
});

使用
.on()
方法(jq 1.7>)委派事件的正确语法是:

现在你不应该委托给主体层,而是委托给最近的静态容器,在那里你可以加载新元素。所以我想:

$('#overlay_content').on('click','.layer',function(e) {...});

使用
.on()
方法(jq 1.7>)委派事件的正确语法是:

现在你不应该委托给主体层,而是委托给最近的静态容器,在那里你可以加载新元素。所以我想:

$('#overlay_content').on('click','.layer',function(e) {...});

但是,您需要的是委派的事件处理程序。如果不推荐使用live,请尝试:

$(container).on("event","link_selector",function() {
  // Your stuff
});
例如:

$(document).on("click",".layer",function(e) {
   e.preventDefault();
   var path = $(this).attr('href');
   $('#overlay_content').load(path, function(){
       $(".media").each(function(){
           var medhei = $(this).height();
           $(this).css("line-height", medhei + 'px');
       });
    });
});

但是,您需要的是委派的事件处理程序。如果不推荐使用live,请尝试:

$(container).on("event","link_selector",function() {
  // Your stuff
});
例如:

$(document).on("click",".layer",function(e) {
   e.preventDefault();
   var path = $(this).attr('href');
   $('#overlay_content').load(path, function(){
       $(".media").each(function(){
           var medhei = $(this).height();
           $(this).css("line-height", medhei + 'px');
       });
    });
});

想出了一个快速的解决方案,希望它能帮助有类似问题的人。 简单地说,我只是让链接在单击时打开它的href属性所在的位置

$('.layer').click(function(e) {
      e.preventDefault();
      var path = $(this).attr('href');
      $('#overlay_content').load(path, function(){
          $(".media").each(function(){
              var medhei = $(this).height();
              $(this).css("line-height", medhei + 'px');
          });
          $("#overlay_content a").click(function(){
              window.location=$(this).attr('href');
              return false;
          });
      });
});

想出了一个快速的解决方案,希望它能帮助有类似问题的人。 简单地说,我只是让链接在单击时打开它的href属性所在的位置

$('.layer').click(function(e) {
      e.preventDefault();
      var path = $(this).attr('href');
      $('#overlay_content').load(path, function(){
          $(".media").each(function(){
              var medhei = $(this).height();
              $(this).css("line-height", medhei + 'px');
          });
          $("#overlay_content a").click(function(){
              window.location=$(this).attr('href');
              return false;
          });
      });
});


请检查href valueParag,我认为它们很好,当我打开页面时,它们应该正常工作,只是在加载jquery时不工作。虽然我可以右键单击并在新选项卡中打开,但这不是一个好的界面。请检查href valueParag,我认为它们很好,当我打开页面时,它们应该正常工作,使用jquery加载时不起作用。虽然我可以右键单击并在新选项卡中打开,但这不是一个好的界面。当我使用它时,它只是打开内容页,而不是将某些部分加载到(#覆盖内容)任何想法,可能是什么问题?谢谢你的帮助。看起来锚点击的默认行为没有被阻止。你的代码表明你正在使用e.preventDefault();所以我不确定这是你的问题。是的,现在我想出了一个快速的解决办法。谢谢。@i好的,那么你找到了解决问题的办法了吗?如果是的话,请提供答案以帮助(也许)未来的读者。是的,我试过了,上面说我必须等3个小时,因为我没有足够的声誉来发布答案。我会这样做。)当我使用这个,它只是打开内容页,而不是将某些部分加载到(#overlay_content)div中。你知道有什么问题吗?感谢您的帮助。看起来锚单击的默认行为没有被阻止。您的代码表明您正在使用e.preventDefault();所以我不确定这是你的问题。是的,现在我想出了一个快速的解决方案。谢谢。@I好的,你找到了解决问题的方法了吗?如果是,请提供答案,以帮助(可能)未来的读者是的,我尝试过,它说我必须等待3个小时,因为我没有足够的声誉发布答案。我会的。)它不起作用,一切都一样,链接不可点击。感谢您的帮助。如果链接具有类“.layer”,并且它们位于文档元素中(存在于html文档的主体中),那么事件处理程序没有理由不工作。检查控制台,看看事件处理程序中的代码是否正常工作。我知道它应该工作。是的,通过firefox控制台检查,它只是空白。谢谢。它不起作用,一切都一样,链接不能点击。感谢您的帮助。如果链接具有类“.layer”,并且它们位于文档元素中(存在于html文档的主体中),那么事件处理程序没有理由不工作。检查控制台,看看事件处理程序中的代码是否正常工作。我知道它应该工作。是的,通过firefox控制台检查,它只是空白。非常感谢。