2016-02-16 4 views
-2
var thumbDom = ''; 

for (var i = 0; i < 10; i++) { 
    thumbDom = thumbDom + '<div id = "div-" ' + i + '>DIV-'+ i +'</div>'; 
    bindEvent(i); 
} 

$('#parent').append(thumbDom); 


function bindEvent(i){ 
    $('#div-' + i).click(function(event) { 
     alert(i); 
    }); 
} 

Я знаю, что код не может работать, событие beacuse связывается перед добавлением dom. , но есть ли способ связать событие click со многими динамическими именами перед добавлением к дереву?Событие привязки до создания DOM в jQuery

Я не wnat использовать $ (документ) .На ('щелчок, ..., я хочу, чтобы связать событие с дочерним узлом.

Любое предложить будет помощь, спасибо ~

Fiddle Here

+3

'Я не wnat использовать $ (document) .on ('click, ..., я хочу связать событие с дочерним узлом. 'Почему? Событие делегирование * точно * шаблон, который будет использоваться здесь. –

+0

Invoke 'bindEvent' после' .append', но @RoryMcCrossan прав, поскольку я не мог найти причин, чтобы избежать этого шаблона ... – Rayon

ответ

0

Вы могли бы попробовать этот подход:

  • определит <div></div>
  • установить его id и innerHtml
  • связывают его с onclick события (что предупреждает его id)
  • добавить его в "#parent" пункта

$(function() { 
    for (var i = 0; i < 10; i++) { 
     $("<div></div>") 
      .attr("id", "div-" + i) 
      .html("DIV-" + i) 
      .click(function() { 
       alert($(this).attr("id")); 
      }) 
      .appendTo("#parent"); 
    } 
});