【问题标题】:Use current elements class as an array name?使用当前元素类作为数组名称?
【发布时间】:2010-01-10 08:23:51
【问题描述】:

是否可以使用元素 CSS 类中的字符串作为数组名称?
我正在寻找一种更智能的方式来存储默认动画,这些动画可能会随着时间的推移而增长,以便在数组中包含更多选项。

示例


JavaScript (jQuery):-

var a1 = ['red', 'pink']; 
var a2 = ['green', 'lime']; 
var a3 = ['blue', 'cyan']; 

$('ul li').click(function() { 
    arr = $(this).attr('class');    // Does this need to be converted?
    $('div#sprite').css('background', arr[0]);    // Is this kosher?
    $('div#sprite p').css('color', arr[1]); 
    });  

HTML:-

<div id='sprite'><p>Lorem ipsum...</p></div>

<ul>
    <li class='a1'>Array 1</li>
    <li class='a1'>Array 2</li>
    <li class='a1'>Array 3</li>
    </ul>

提前致谢!

【问题讨论】:

    标签: javascript jquery arrays


    【解决方案1】:

    您可以使用以下方法按名称访问 全局(顶级) 变量:

    window[arr]
    

    所以你正在寻找window[arr][0]。在此处查看实际操作:http://jsbin.com/ofemo

    但是,这会在您的 JavaScript 和设计之间建立紧密的联系。我通常更喜欢使用.addClass,并使用 CSS 定义颜色。

    【讨论】:

    • 感谢 Kobi,这个演示真的很有帮助; 变量范围的情况:-|。您对使用课程是正确的;我将在部分/页面之间使用 jQuery 颜色转换。现在我正在考虑从我的样式表部分颜色()创建一个“数组”会更有意义。呸;所以是礼物也是诅咒。再次感谢!
    【解决方案2】:

    你应该使用 jQuery 的元数据插件。它允许您将任何与元素相关的数据存储在类或任何 data-* 属性中。

    【讨论】:

    • +1 在我面前写,所以我不必将它编辑到我的答案中。
    • 这可能会有所帮助,现在我已经了解了您/Kobi 的想法。谢谢艾曼塔斯!
    【解决方案3】:

    或者,有一个这样的数组:

    var colors = {
        'a1':{
            'background-color':'red',
            'color':'pink'
        },
        'a2':{
            'background-color':'green',
            'color':'lime'
        },
        'a3':{
            'background-color':'blue',
            'color':'cyan'
        }
    }
    

    然后

    $('div#sprite').css(colors[$(this).attr('class')]);
    

    【讨论】:

    • 可能不会坚持使用数组,但感谢您的提示,不知道它们可以这样声明。和平埃里克。
    • 澄清一下:这在技术上是一个对象,而不是一个数组。注意每个值如何有一个对应的键。 Javascript 允许您通过 [] 表示法访问属性,这使它看起来像一个数组。
    • 不就是一个关联数组和一个对象吗?在 Javascript 中,它们是一回事。
    猜你喜欢
    • 2017-02-20
    • 2021-08-11
    • 1970-01-01
    • 1970-01-01
    • 2010-11-12
    • 2013-07-05
    • 1970-01-01
    • 2014-08-07
    • 2014-02-05
    相关资源
    最近更新 更多