2015-04-17 114 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);