2010-11-09 65 views
0

我只是想知道是否有更好的方法来检测每个这些.modal元素的宽度(在这个标记中可能有N个)。jQuery .width()检测

以我现在这个数字的方式,它似乎只使用标记中第一个.modal的.width()。

<script type="text/javascript"> 
    $(document).ready(function() { 
     $(".modal").hide(); 
     $(".modal-links a").each(function(i,o){ 
      $(this).click(function(popUp){ 
      var modalWidth = $(".modal").width(); 
      var modalHeight = $(".modal").height(); 
      $(".modal").css({ 
      "margin-left":-(modalWidth/2) 
      }); 
      $(".modal:eq("+i+")").show().siblings(".modal").hide(); 
      }); 
     }); 
    });</script> 

回答

1

你要得到你想要在.click()的开始对付.modal,就像这样:

$(document).ready(function() { 
    $(".modal").hide(); 
    $(".modal-links a").each(function(i){ 
     $(this).click(function(popUp){ 
     var modal = $(".modal").eq(i), 
      modalWidth = modal.width(), 
      modalHeight = modal.height(); 
     modal.css({ "margin-left":-(modalWidth/2) }) 
      .show().siblings(".modal").hide(); 
     }); 
    }); 
}); 

没有这样做,你是正确的,它会得到.height().width()的第一个.modal元素。

+1

Awww ...慢*和*错。有时我只是恨你@NickCraver:D但是,是的,这是一个非常愚蠢的错误。 – 2010-11-09 00:51:36

+0

这是有效的,但它似乎可能是在.modal div的内容被完全加载之前计算宽度(因此不是真正的宽度)。哦,谢谢你! – 2010-11-09 04:56:58