Привязать событие onclick динамически с помощью javascript

У меня есть код 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')=""

попробуйте использовать \ "as str + =" <li onclick = "\ func ('" + var + "')" \> </li> "

Haidangdevhaui 26.10.2018 07:02

попробуйте использовать обработчик событий jquery. на js api.jquery.com/on

Julius Limson 26.10.2018 07:04
1
2
91
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Может дублироваться на Обработчик событий не работает с динамическим контентом

использовать функцию 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()
})
Ответ принят как подходящий

Использование обратных кавычек сделает этот способ более читаемым. Ваша проблема в том, что вам нужно заключить обработчик onclick в кавычки:

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

Другие вопросы по теме