2013-04-23 85 views
0

我有類似的東西:使用變量值

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

所以,它給了我正確的名稱(得克薩斯州),但它在控制檯說:

Object usa.Texas has no method 'click' 

如果我寫它直接想:

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

它的工作原理...

謝謝

+0

[obj.data('name')]是一個javascript數組,其中包含一個元素,您需要使用jqueryobject來使用click方法。所以爲了幫助你,我們需要現在什麼是obj.data('name')和usa.Texas之間的關係(最後一個似乎是一個jquery對象, – Alepac 2013-04-23 14:29:03

+0

它看起來像你有一個現有的'usa'對象? 'state = usa [obj.data('name')]' – numbers1311407 2013-04-23 14:29:49

+0

obj.data('name')是Raphaeljs中的一個值,所以它直接給出字符串:usa.Texas,所以我嘗試了StateName [0]它是一個字符串,它給了我:u - 用於美國的第一個字母。德克薩斯州...我仍然試圖得到它,謝謝 – moabi 2013-04-23 14:50:45

回答

0

正如你在評論中指出的那樣,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(....... 
相關問題