2015-04-17 103 views
4

我已經編寫了腳本來更改div的幾個CSS屬性。我已經嘗試了2種方法,我發現谷歌,但他們都沒有工作。我已經徹底閱讀了這些例子,我不知道爲什麼這不起作用。使用jQuery更改CSS不起作用

#rightsection中的內容較少時,#leftsection中有圖像,#rightsection附着在#contentpage的底部。但是,如果#rightsection中的內容太多,則內容溢出。因此,當溢出檢測到滾動時,我想更改爲position:absoluteposition:static

我對JQuery並不擅長,所以我希望你們中的任何人都能知道答案。如果有人知道,我會很感激。

(function($) { 
    $.fn.hasScrollBar = function() { 
     return this.get(0).scrollHeight > this.height(); 
    } 

    //Method 1 
    if($("#rightsection").hasScrollBar()){ 
     $('.rightsection1').css({ 
      "position":"static", 
      "margin":"-75px 0 0 150px" 
     }); 
    } 

    //Method 2 
    if($("#rightsection").hasScrollBar()){ 
     $('#rightsection').addClass("rightsection1"); 
     $('#rightsection').removeClass("rightsection2"); 
    } 
})(jQuery); 

JSFiddle

解決方案

我通過$(document).ready(function()改變(function($),現在,它完美的作品。

+1

'保證金top'只希望'1'值,改變'保證金top'到'margin' –

+1

我檢查了小提琴和看到你沒有添加jQuery。這裏有一個更新版本的小提琴與1.11添加jQuery庫在http://jsfiddle.net/2e1hcweq/1/ –

+0

「margin-top」值應改爲marginTop –

回答

0

解決方案

我通過$(document).ready(function()改變(function($),現在,它完美的作品。

0

還有一件事:你應該注意到,當你將(function($)更改爲$(document).ready(function()時,它的工作原理很簡單,因爲這裏的代碼根本沒有加載。

(function($) { ... })(jQuery);用於$.noConflict mode,以防$符號被其他庫使用。不管你是否添加這個包裝器,你總是需要$(document).ready(function() { ... });(或簡稱爲$(function() { ... });)來初始化jQuery函數。

你的情況

所以,你可以做這樣的事情:

(function($) { 
    $(function() { 
     ... 
     // your codes here 
     ... 
    }); 
    })(jQuery);