2010-11-09 64 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