首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >访问Jquery/Javascript中的动态属性名称

访问Jquery/Javascript中的动态属性名称
EN

Stack Overflow用户
提问于 2012-06-15 12:50:21
回答 3查看 652关注 0票数 1

在我正在编写的插件中,dev可以指定选项,我正在存储和引用的选项如下:

代码语言:javascript
复制
(function( $, window) {
    $.widget("mobile.plug", $.mobile.widget, {
        options: {
            menuWidth: '25%',
            middleWidth: '25%',
            mainWidth: '25%'
            },
         some: function(){
            var self = this,
                o = self.options;

            console.log( o.menuWidth );
            }
     })
}) (jQuery,this);

我的问题

假设我想遍历这三个元素(主元素、菜单元素、中间元素)并获得相应的选项值,如果可能的话,我将如何动态地构造o.elemWidth

这不起作用(错误:后面缺少名称。(操作员):

代码语言:javascript
复制
// this selects panels with jqmData(panel="mid|menu|main")
var elems = $('selector');

for (var i = 0; i<elems.length; i++){
   var el = elems.eq(i);
   console.log( o.[el.jqmData("panel")]Width );
   }
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-06-15 12:53:36

您应该能够将“宽度”连接到“面板”结果:

代码语言:javascript
复制
o[el.jqmData("panel") + "Width"]

例如,如果el.jqmData("panel")是“菜单”,你就会得到o["menuWidth"]

票数 4
EN

Stack Overflow用户

发布于 2012-06-15 12:55:52

您得到了错误,因为您试图使用对象成员运算符的两种形式。

这两种形式是。

  • obj.propertyName点notation
  • obj["propertyName"]括号符号

您有.[...] (两者都使用)。这个点期望在它后面出现一个名字)

您需要[...] (没有前面的点)

然后,还需要进行字符串连接以添加"Width"

代码语言:javascript
复制
o[el.jqmData("panel") + "Width"]
票数 3
EN

Stack Overflow用户

发布于 2012-06-15 12:55:59

您要查找的是带有字符串的括号内符号:

代码语言:javascript
复制
for (var i = 0; i<elems.length; i++){
   var el = elems.eq(i);
   console.log( o[el.jqmData("panel") + "Width"] );
   }

...assuming,el.jqmData("panel")返回"mid""menu"等。

在JavaScript中,您可以使用虚线表示法和文字(obj.foo)或括号内的表示法和字符串(obj["foo"])引用属性。在后一种情况下,它不必是文字字符串,它可以是表达式的结果。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11050978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档