【问题标题】:use variable value as object with jquery/javascript使用变量值作为 jquery/javascript 的对象
【发布时间】:2013-04-23 14:25:32
【问题描述】:

我有类似的东西:

var StateName =  [obj.data('name')];
StateName.click(function(e){ etc....

所以,它给了我正确的名称(德克萨斯州),但它在控制台中显示:

Object usa.Texas has no method 'click' 

如果我直接这样写:

usa.Texas.click(function(e){ etc....

它有效...

谢谢

【问题讨论】:

  • [obj.data('name')] 是一个 javascript 数组,其中包含一个元素,您需要一个 jqueryobject 才能使用点击方法。因此,为了帮助您,我们现在需要了解 obj.data('name') 和 usa.Texas 之间的关系(最后一个似乎是 jquery 对象。
  • 您似乎有一个现有的usa 对象?所以也许state = usa[obj.data('name')]
  • obj.data('name') 是 Raphaeljs 中的一个值,所以它直接给出字符串:usa.Texas,所以我尝试了 StateName[0] 但因为它是一个字符串,所以它给了我: u -- usa.Texas 的第一个字母……我还在努力,谢谢

标签: jquery variables object raphael


【解决方案1】:

正如您在 cmets 中指出的,obj.data('name') 返回一个字符串。你不能像那样访问一个 JavaScript 对象,但是你可以通过传递一个字符串来访问它的属性。

你可以这样做:

// Get Name, split to extract the property portion
var StateName = obj.data('name').split('.')[1];

// Bind to specific state
usa[StateName].click(......

如果您需要对象的名称(美国),您可以将所有(假设)国家对象嵌套在另一个对象中。

// Wrap in object
var countries = {usa: { texas: jQuery() }}

// Get Name, split to extract portions
var CountryState = obj.data('name').split('.');
var Country = CountryState[0];
var State = CountryState[1];

// Bind to country / state
countries[Country][State].click(.......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-23
    • 1970-01-01
    • 1970-01-01
    • 2011-03-21
    • 2013-07-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多