简体   繁体   English

使用javascript动态绑定onclick事件

[英]Bind onclick event dynamically using javascript

I have the below JS code我有以下 JS 代码

for(var i=0;i<resultData.length;i++) {
    var id = "" + counter + "_" + resultData[i].id;
    var action = resultData[i].action;
    str += "<li id=" + id + "><div id=div_" + id + "><img src='assets/img/plus.png' id='img_" + id + "' onclick=getSubDirs('" + id +"', '" + action +"') /><label id=label_"+ id +" onclick=clickedDir('"+ id + "')>"+ resultData[i].label + "</label>" +"<span style='display:none' id=path_"+ id +">"+ resultData[i].path +"</span></div></li>";
    counter++;
}

The above code generates a dynamic list and I'm adding it to ul .上面的代码生成一个动态列表,我将它添加到ul

<li id="id_1_abc">
    <div id="div_id_1_abc">
        <img src="assets/img/plus.png" id="img_id_1_abc" onclick="getSubDirs('id_1_abc'," 'job')="">
        <label id="label_id_1_abc" onclick="clickedDir('id_1_abc')">abc</label>
        <span style="display:none" id="path_id_1_abc">/abc</span>
   </div>
</li>

The above is the generated list.以上是生成的列表。 But my onlick changes to onclick="getSubDirs('id_1_abc'," 'job')=""但是我的 onlick 更改为onclick="getSubDirs('id_1_abc'," 'job')=""

Using backticks will make this way more readable.使用反引号将使这种方式更具可读性。 Your problem is that you need to wrap the onclick handler in quotes:您的问题是您需要将 onclick 处理程序用引号括起来:

str += `<li id="${id}"><div id="div_${id}"><img src='assets/img/plus.png' id="img_${id}" onclick="getSubDirs('${id}', '${action}') />...`

Could be duplicated to Event handler not working on dynamic content可以复制到不处理动态内容的事件处理程序

use jquery .on function使用 jquery .on 函数

<ul id="someidname">
  **dynamic content **
  <li class="someclassname" id="id_1_abc">
    <div id="div_id_1_abc">
        <img src="assets/img/plus.png" id="img_id_1_abc" >
        <label id="label_id_1_abc" >abc</label>
        <span style="display:none" id="path_id_1_abc">/abc</span>
   </div>
</li>
</ul>

on your js在你的 js 上

$("#someidname").on('click','.someclassname', function(){
// yourfunctions ..
// clickedDir()
// getSubDirs()
})

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

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