分配Anchor标签以动态调用Javascript函数

我正在创建'+servicename+'
动态标记并将其附加到div

然后使用下面的映射将tags属性映射到某个函数

 var idMap = { //it can be a lot more "javaInfo":javaInfo, /*infa9 product map*/ "infa9PMServer":infa9PMServer, "infa9Service":infa9Service }; 

这是单击处理程序

 $('#ds-accordion a').click(function(event) { var elementId=$(this).attr("id"); treeItemClickHandler(elementId); }); function treeItemClickHandler(id) { (idMap[id])(id); //Is this usage called 1st class functions? } function infa9Service(id) { alert("i got this "+id); } 

注意 :我使用的是Jquery v1.6.3

但是当我点击任何a标签时,它会调用函数并执行函数内的所有操作,但是会给出一个错误。 Object dosen't support this porperty or method treeItemClickHandler函数中的Object dosen't support this porperty or method

我想知道,

  1. 如何避免出现此错误?
  2. 对于像这样的事情,有更好的方法吗?
  3. 它是我正在使用的第一类function(如果是这样,我可以在哪里了解更多)?

谢谢。

更新

我怎样才能传递第二个参数?

 ''+servicename+'
' $('#ds-accordion a').click(function(event) { var elementId=$(this).attr("id"); var elementName=$(this).attr("title"); treeItemClickHandler(elementId,elementName); }); function treeItemClickHandler(id,name) { idMap[id](id,name); } function infa9Service(id,name) { alert(id+", "+name); }

它给了我infa9Service, undefined

请查看http://jsfiddle.net/ywQMV/4

1)定义你的function。

2)定义你的id地图。

HTML部分:

  

js部分:

 function infa9Service(id, serviceName) { alert("i got this "+id +" serviceName : " + serviceName); } var idMap = { "infa9Service":infa9Service }; $('#ds-accordion a').click(function(event) { var elementId=$(this).attr("id"); var serviceName = this.title; treeItemClickHandler(elementId, serviceName); }); function treeItemClickHandler(id,serviceName) { // alert(idMap[id]) (idMap[id])(id,serviceName); //Is this usage called 1st class functions? }