首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >动态分配Anchor标签调用Javascript函数

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

Stack Overflow用户
提问于 2011-11-23 06:51:04
回答 1查看 1.3K关注 0票数 0

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

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

代码语言:javascript
运行
复制
var idMap = {
            //it can be a lot more
            "javaInfo":javaInfo,

            /*infa9 product map*/
            "infa9PMServer":infa9PMServer,
            "infa9Service":infa9Service
        };

这是单击处理程序

代码语言:javascript
运行
复制
$('#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);
}

备注:我使用的是jQueryv1.6.3

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

我想知道,

  1. 如何避免这个错误?
  2. 是否有更好的方法来处理这样的事情?
  3. ,以及我正在使用的第一类函数(如果是的话,我可以在哪里了解更多)?

谢谢。

更新

如何传递第二个参数?

代码语言:javascript
运行
复制
'<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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-23 07:16:29

看看这个http://jsfiddle.net/ywQMV/4

1)定义您的功能。

2)定义您的id映射。

html部件:

代码语言:javascript
运行
复制
<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部分:

代码语言:javascript
运行
复制
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?
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8238290

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档