在变量中存储.css()方法

时间:2014-11-22 01:22:55

标签: javascript html css variables methods

我用Google搜索这个网站,但没有运气。我只想要一个简单明确的答案。

这是我的HTML:

<div id="main-navigation">  
    <ul>
        <li>
            <a href="#">home</a>
        </li>
    </ul>
</div>

这是我正在使用的css方法,我已经测试过并且有效:

// Layout 1
$('#default').click(function() {
    if('true' == 'true') {
        // General Values
        $(hmnavUL).css({ backgroundColor: bgDefault });
});

以下是我创建的变量:

var bgSet = $(hmnavUL).css({ backgroundColor: bgDefault });

以下是我要实现的目标:

// Layout 1
$('#default').click(function() {
    if('true' == 'true') {
        // General Values
        bgSet
}); 

结果:

浏览器完全忽略了我的“bgSet”变量,但是当我不使用变量时它确认了样式。我的首选版本并没有给我任何错误。你可以告诉我有关我的语法的任何事情。我假设这是我的语法。

我已经链接了一个照片示例来演示我想要的最终产品(注意:我还无法附加图片)。

(默认布局,第二个布局,删除所有样式)

期望的结果:Result

2 个答案:

答案 0 :(得分:2)

变量不包含您期望的操作。代码不保存在变量中,它立即执行,css方法(jQuery对象)的返回值存储在变量中。

您不能在变量中放置“宏”并通过引用变量来执行它。你要做的最接近的事情是将代码放在一个函数中,以便以后执行:

var bgSet = function() {
  $(hmnavUL).css({ backgroundColor: bgDefault });
});

// Layout 1
$('#default').click(function() {
  if('true' == 'true') {
    // General Values
    bgSet();
  }
});

答案 1 :(得分:0)

看起来你想根据click eventHandler切换和元素的css属性。你有正确的想法,但你的javascript略有偏差。这是一个应该执行所需功能的示例:

// Function to change the css of an element
function makeRed(elem){
    elem.css({ "background-color" : "red" });
};

// Attach an event handler..
$("#clickMe").click(function(){

    // Store the object as a variable
    var obj = $("#foo"); // <-- The element you want to change the bg of
    
    // Run your function.
    makeRed(obj);
    
});
#foo{
    width: 50px;
    height: 50px;
    background-color: blue;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.1/jquery.min.js"></script>
<div id="foo"></div><br />
<button id="clickMe">Click Me!</button>

这实际上是关于学习javascript选择器,函数和变量的工作原理。虽然你的问题是用StackOverflow的一种迟钝的方式表达的,但我感谢你发布了你的代码并且你正在努力学习。 :)