0

我的问题是我在加载后有很多链接,加载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');
          });
      });
});

也尝试过这样的事情,但没有奏效:

$('.layer').live('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');
          });
      });
});
4

3 回答 3

2

想出了一个快速的解决方案,希望它能帮助有类似问题的人。简单来说,我只是让链接在点击时打开它的 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;
          });
      });
});
于 2013-09-24T19:10:44.960 回答
1

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

$(document.body).on('click','.layer',function(e) {...});

现在您不应该委托给正文级别,而是委托给您加载新元素的最近的静态容器。所以我猜:

$('#overlay_content').on('click','.layer',function(e) {...});
于 2013-09-24T10:35:50.010 回答
0

您想要的是委托的事件处理程序,但是不推荐使用 .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');
       });
    });
});
于 2013-09-24T10:36:02.527 回答