2011-07-13 178 views
2

我有一個「相對」屬性的鏈接:如何使用屬性獲取JSON值?

<a href="#" rel="music">Click</a> 
<p></p> 

我有一個包含JSON變量:

var myStyle = { 
"music": { "band": "Beatles", "type": "Rock"}, 
    "movie": { "title" "Shrek", "type": "Kids"} 
}; 

我想使用jQuery根據「相對」從JSON獲得價值屬性:

$('a').click(function() { 
     var whatLink = $('a').attr('rel'); 
    $('p').text(myStyle.whatLink.band); 
}); 

我看到的「風格」的值是「音樂」,但點擊該鏈接的結果是

TypeError: Cannot read property 'band' of undefined

這是可能的嗎?

+1

'rel'「描述了從當前文檔到由href屬性指定的錨的關係。它不是您存儲任意數據的地方。使用HTML 5的data- *屬性。 – Quentin

+0

該變量包含JavaScript對象,而不是JSON。 – alex

+0

@Quentin:雖然燈箱會讓你相信它。 :P – alex

回答

1

如果你正在使用...

$('a').click(function() { 
     var whatLink = $('a').attr('rel'); 
    $('p').text(myStyle[whatLink].band); 
}); 

... whatLink總是要給你在你的頁面的rel值的最後一個(或第一,記不清了)a。要真正檢查剛剛單擊的鏈接的rel值,請在事件選擇器中使用this而不是'a'。像這樣......

$('a').click(function() { 
     var whatLink = $(this).attr('rel'); 
    $('p').text(myStyle[whatLink].band); 
}); 
1

TypeError: Cannot read property 'band' of undefined

這是因爲whatLink屬性不存在的myStyle,因此返回undefined,這當然沒有band財產。

使用括號標記......

$('a').click(function() { 
     var whatLink = $('a').attr('rel'); 
    $('p').text(myStyle[whatLink].band); 
}); 

...否則whatLink是字面上。

3

嘗試

$('a').click(function() { 
     var whatLink = $('a').attr('rel'); 
    $('p').text(myStyle[whatLink].band); 
}); 

當使用變量訪問屬性,點操作不工作,你必須使用詞典/數組運算符

+0

想念一段時間:) – alex