2016-06-28 68 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

非常感谢,决定沿着全球变化的路线走。给我留下了很大的头痛:) –