微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将事件处理程序绑定到正在创建的元素?

如何解决如何将事件处理程序绑定到正在创建的元素?

| 在我的页面中,我必须根据用途的操作动态地创建一些元素,例如,当用户单击按钮时,我将创建一个新的div,但是我想在该div中添加一个点击处理程序:
function createNewDiv(){
  var str=\"<aid=\'na\'>xxx</a>\";
  //add click handler to this a
  var ele=document.getElementById(\"na\");
  if(ele.attachEvent){
    ele.attachEvent(\"onclick\",function(){xxxx});
  }else if(ele.addEventListener){
    ele.addEventListener(\"click\",function(){xxx},false);
  }
  document.getElementById(\"con\").innerHTML=\"s\";
}
当我运行此代码时,出现错误: ele未定义。 也许是由于我使用
var ele=document.getElementById(\"na\")
html dom正在构建中,因此无法找到该元素。(我认为这就是为什么我们使用jquery.ready(xxx)的原因。 如果是这样,是否有任何使它起作用的想法? 我在应用程序中使用Prototype 1.4。 感谢所有的答案。 现在使用
<a>
代替
<div>
但是由于某种原因,我不能使用dom来构建我的元素,也就是说,我不能使用:
var div_n=document.createElement(\"a\");
a.id=\"na\";
......
相反,我必须使用:
var s=\"<a id=\'na\'>xxx</a>\";

//append this created link to the existed container
document.getElementById(\"con\").innerHTML=s;

//then how to add the click handler to the `a#na`?
    

解决方法

        您想要进入
ele
的要素是什么?如果我理解您的问题,您想向正在创建的
div
中添加事件,而
div
具有
id = nDiv
,那么为什么要尝试使用with10ѭ获得元素?如果您尝试将事件绑定到您创建的div,则可以通过以下方式进行操作:
function createNewDiv(){
  var div = document.createElement(\'div\');
  div.id = \'nDiv\';
  //add click handler to this div
  div.addEventListener(\"click\",function(){xxx},false);
  div.innerHTML=\"s\";
}
如果您在绑定函数时遇到问题(我不这么认为),请尝试定义函数并将其绑定到click,方法是:
function foo(){xxx}
...
div.addEventListener(\"click\",foo,false);
...
请注意,绑定
foo
函数时没有括号。     ,        您可以改为使用DOM创建div。这样就可以立即添加事件处理程序。例:
function createNewDiv(){
  var ele = document.createElement(\"div\");
  div.setAttribute(\"id\",\"nDiv\");

  // ...

  document.getElementById(\"con\").appendChild( ele );
}
边注: 与innerHTML相比,使用DOM进行此操作还快得多,并且对标准的抱怨也更多。但是人们倾向于使用innerHTML,因为它更容易。     ,        
var str=\"<div id=\"nDiv\">xxx</div>\"
在进一步研究之前,这是问题的一部分吗?我不确定它的作用,但是除非您转义使用引号,否则它是无效的。 无论如何,我不确定您的代码在做什么,但是您想要做的应该看起来像这样:
// Get a container element for wherever you\'re going to add these divs
var container = document.getElementById(\"con\");

function createDiv() {
  var div = document.createElement(\"div\");
  // assign properties to div
  div.onclick = someFunction;
  container.appendChild(div);
}
jsFiddle示例     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。