2014-01-20 13 views
0

我目前正在尝试编写一个程序,其中包含每个点击动态div。 继承人参考小提琴:http://jsfiddle.net/aaronyolungz/P8x3z/7/最佳编程方式:开关或对象方向?

每格都会有,我想单独调用4个参数:姓名,家乡,专业,经验(都是字符串)

至于现在我有一个函数包含所有4个变量,这些变量基于函数输入而变化,但我希望能够在我称之为名称,主要或家乡时返回。我的整体问题是,如果我保留我的代码并按以下方式调用变量:

UserStatement(user).User.name

或者我应该去这样的事情:

function user_name(user){return name;} 
function user_major(user){return major;} 

编辑:固定小提琴链接

+1

为什么不直接使用数组,像这样:http://jsfiddle.net/rooseve/P8x3z/8/ – Andrew

+0

JavaScript是一种非常灵活的语言它与Java等其他语言不同。 –

+0

唯一的原因是因为我要将id的名称切换到它所属的人的名字。 – AaronYoLungz

回答

1

你有什么是检索模型(UserStatement(userNumber))的功能,我没有看到呼叫者使用诸如UserStatement(userNumber).name之类的问题。

至于switch语句,它可以被替换为数组或对象中的查找。

而且,由于接入模式必须是动态的,你可以使用的元素的属性来告诉你什么属性来访问:

<ul id="testimonials" data-property='name'> 
    ... 

,并获得这样的:

var userNumber = $(this).attr('id'); 
var property = $(this).parent().data('property'); 
added_div = '<div class="testimonial_expanded">' + 
    UserStatement(userNumber)[property] + '</div>'; 

小提琴here

+0

所以我可以通过调用'function.localVar'来检索局部变量? 对不起,如果这是明显的和重复的,我只是想仔细检查,并确保我知道这是如何工作的。 – AaronYoLungz

+0

不,您将访问您从该函数返回的对象。它不是局部变量,而是返回值。 –

+0

所以,当你说'UserStatement(userNumber).name'会工作,这怎么可能在代码中实现? – AaronYoLungz

1

我想你应该把name, major, hometown作为属性值li内,如

<li data-name="1" data-major="xx" data-hometown="" ></li> 

因此,你可以通过$.data得到这些值,而不是将数据在JavaScript。

参考jQuery的数据api doc

UserStatement(userName).name

+0

如果我要实现这个目标,我会在寻找家乡时使用$ .data-hometown吗? – AaronYoLungz

+0

我相信它应该是$(element).data('hometown')。检查我刚刚在答案中添加的api文档 – fengd