2016-06-28 63 views
1

我正在使用ExpressionEngine並將我的頻道條目轉換爲JSON,效果很好。使用jQuery和HTML5數據動態調用JSON數據*

我想要做的是使用存儲在data-*屬性中的ID填充來自特定JSON對象的信息的Sweet Alert 2疊加層。

這裏是JSON的一個例子:

var director_45 = { 
    "title": "Andy H", 
    "entry_id": 45, 
} 

而且,如果我做一個簡單的jQuery警報這樣,它返回我的名字:

alert(director_45.title) 

但是,如果我這樣做jQuery中:

$('.trigger-director').on('click', function() { 
    var director_id = $(this).data('director'); 
    var director = 'director_' + director_id; 
    alert(director.title); 
}); 

有了這個HTML火吧:

<div class="col-xs-6 col-md-3"> 
    <div class="director-box"> 
    <img src="/images/made/images/uploads/images/Andy_400_300_c1.jpg" class="img-responsive" width="400" height="300" alt="" /> 
    <h3>Andy H</h3> 
    <p>Director</p> 
    <a class="trigger-director" data-director="45">Find out more</a> 
    </div> 
</div> 

單擊「瞭解更多」鏈接時的警報僅顯示「未定義」。

我創建了一個鏈接的jsfiddle也在這裏 - https://jsfiddle.net/zu103vxc/

任何想法是什麼,我做錯了和/或丟失?

+0

'變種導演=窗口[ 'director_' + DIRECTOR_ID];'全局變量是窗口對象的屬性,並且可以訪問他們使用數組符號 –

+0

導演不是一個對象,導演是一個字符串'director_45',ohh @JuanMendes,那個會好用的 –

+0

[JavaScript動態變量名稱]的可能重複(http://stackoverflow.com/questions/22727711/JavaScript的動態可變名稱) –

回答

1

使用eval()

var director_45 = { 
    "title": "Andy H", 
    "entry_id": 45, 
} 

alert(director_45.title) 

$('.trigger-director').on('click', function() { 
    var director_id = $(this).data('director'); 
    var director = 'director_' + director_id; 
    alert(eval(director).title); 
}); 

或全局變量

var director_45 = { 
    "title": "Andy H", 
    "entry_id": 45, 
} 
window.director_45 = director_45; 
alert(director_45.title) 

$('.trigger-director').on('click', function() { 
    var director_id = $(this).data('director'); 
    var director = 'director_' + director_id; 
    alert(window[director].title); 
}); 
+1

非常感謝,決定沿着全球變化的路線走。給我留下了很大的頭痛:) –