2014-11-28 3 views
1

Я делегировал обработчик событий к элементам, которые еще не созданы, как это:JQuery делегат OnLoad обработчик событий для вновь созданных элементов

$('body').on('change', '#some_elementid', function() { 
    //actions 
}); 

это работает,

Но я хочу actions бежать прямо после создания элемента без каких-либо других событий. load не работает.

что можно здесь для достижения onload?

UPDATE:

<div id="some_elementid"> 
    <button id="addmore">+ add more</button> 
</div> 

, нажав на + add more, другой контейнер будет вставлен в #some_elementid который будет иметь несколько полей. Я хочу предварительно заполнить эти поля во время вставки.

без prepopulation, это будет выглядеть следующим образом:

<div id="some_elementid"> 
    <div> 
     <input type="text" id="id_0"> 
     <input type="text" id="id_1"> 
     ... 
    </div> 
    <button id="addmore">+ add more</button> 
</div> 

Я хочу, чтобы манипулировать во время OnLoad и показать, как:

<div id="some_elementid"> 
    <div> 
     <input type="text" id="id_0"> 
    </div> 
    <button id="addmore">+ add more</button> 
</div> 

JSfiddle: http://jsfiddle.net/yugaj2x2/

Я хочу, чтобы скрыть "two" при вставке. потому что позже, щелкнув какую-то другую радиокнопку, появится "two", но не сейчас. это то, что я пытаюсь достичь

+1

Вы должны предоставить соответствующую JQuery/JavaScript код, используемый для заполнения контейнера, *** jsFiddle ** * было бы замечательно. Недостаточно информации, чтобы узнать, зачем вам нужно делегировать событие onload. Вы используете какой-то метод iframe/object/async или что? Помните, что событие onload не запускается при добавлении элемента в DOM –

+0

Как насчет JavaScript, который вставляет новый контент? – PeterKA

+0

@ A.Wolff Я знаю, но как я предварительно заполняю элементы, прежде чем они появятся? – doniyor

ответ

1

Вы могли бы захватить событие на все браузеры, которые поддерживают его:

document.addEventListener(
    'load', 
    function(event){ 
     var elm = event.target; 
     if(elm.id === 'some_elementid'){ // or any other filtering condition 
      // do some stuff 
     } 
    }, 
    true // Capture event 
); 
+0

это хорошо выглядит. это также работает для новых элементов, которые создаются _after_ dom? – doniyor

+0

@doniyor Ya, даже событие onload не пузырится, вы все равно можете зафиксировать его в любом статическом контейнере. например: http://jsfiddle.net/j8y0ow3h/, используя событие onerror для изображений –

+0

вы его протестировали? – doniyor

Смежные вопросы