繁体   English   中英

分配锚标记以动态调用Javascript函数

[英]Assigning Anchor tag's to call Javascript function dynamically

我正在创建<span class="infa9span"><img src="/csm/view/include/images/foldericon.png"/><a id="infa9Service">'+servicename+'</a><br/></span>动态标记并将其附加到div

然后使用下面的地图绘制a标签属性的一些功能

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标记时,它会调用函数a来执行函数内的所有操作,但是会出现错误, Object dosen't support this porperty or methodtreeItemClickHandler函数中不Object dosen't support this porperty or method

我想知道,

  1. 如何避免出现此错误?
  2. 对于这样的事情,是否有更好的方法?
  3. 我正在使用的是一等函数(如果是,我在哪里可以了解更多信息)?

谢谢。

更新资料

如何传递第二个参数?

'<span class="infa9span"><img src="/csm/view/include/images/foldericon.png"/><a id="infa9Service" title='+servicename+'>'+servicename+'</a><br/></span>'

$('#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)定义您的功能。

2)定义您的ID映射。

html部分:

<div id ="ds-accordion">    
    <span class="infa9span">
         <img src="/csm/view/include/images/foldericon.png"/>
         <a id="infa9Service" title='+servicename+'>'+servicename+'</a>
         <br/>
    </span>

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?
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM