2017-02-16 83 views
0

我寫了一些jQuery來動態定位元素。雖然它在加載時起作用,但在窗口大小調整時它不起作用。jQuery on('resize')按預期工作

的代碼,我有:

$(document).ready(function() { 
     var offset = $("#kDropdown").offset(); 
     //$(".hidden-dropdown").css('position', 'absolute') 
     //$(".hidden-dropdown").css('left', offset.left); 
     $(document).on('resize', function() { 
     $(".hidden-dropdown").css('position', 'absolute') 
     $(".hidden-dropdown").css('left', offset.left); 
     }).trigger('resize'); 
    }); 


     <div class="hidden-dropdown hide"> 
     <ul> 
      <li><a href="#">Item One</a></li> 
      <hr /> 
      <li><a href="#">Item Two</a></li> 
      <hr /> 
      <li><a href="#">Item Three</a></li> 
     </ul> 
     </div> 

任何想法?

+2

將事件附加到窗口而不是文檔。 – Teemu

回答

3

通常情況下,一個調整是window,因此:

$(window).on("resize", function() { 
    console.log("yay"); 
}); 

您可以直接與resize方法將其固定:

$(window).resize(function() { 
    console.log("direct yay"); 
}); 

他們都是相同的。

+0

無論出於何種原因,我試圖移動的元素不會與此事件相關,但事件正在觸發。 – Quesofat

+0

然後這裏有更多的背景。通過添加一個'console.log'來檢查事件是否被調用。通過添加偏移量的「console.log」來檢查是否有實際的偏移量。最後,確保'.hidden-dropdown'存在。此外,您可以訪問DOM(F12)並檢查'.hidden-dropdown'元素是否應用了新的樣式。如果您右鍵單擊該元素,則可以檢查該元素,並直接向該元素打開DOM。 –

+0

樣式未應用,但事件處理程序正在運行。我甚至可以動態地重新渲染樣式?我不認爲這應該是一個問題。 – Quesofat