我有下面的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++;
}
上面的代码生成一个动态列表,我将其添加到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>
以上是生成的列表。但是我对onclick="getSubDirs('id_1_abc'," 'job')=""
答案 0 :(得分:1)
使用反引号将使这种方式更具可读性。 您的问题是您需要将onclick处理程序用引号引起来:
str += `<li id="${id}"><div id="div_${id}"><img src='assets/img/plus.png' id="img_${id}" onclick="getSubDirs('${id}', '${action}') />...`
答案 1 :(得分:0)
可以复制到Event handler not working on dynamic content
使用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>
在您的js中
$("#someidname").on('click','.someclassname', function(){
// yourfunctions ..
// clickedDir()
// getSubDirs()
})