События не будут запускаться, которые были добавлены в динамически созданные div - PullRequest
2 голосов
/ 24 декабря 2011

Я работаю в JavaScript.По большей части я смог нормально добавить прослушиватели событий, но для div, которые я генерировал динамически, независимо от того, какое событие я добавляю к ним, ничего не происходит.Код такой:

 for(var i=0; i<sceneNumber; i++){
    var a=i;
    if(i>2)
        a=i%3;
    sceneArray[i]=document.createElement('div');
    sceneArray[i].className="border"+a;
    if(i%2==1)
        sceneArray[i].style.left=0;
    else
        sceneArray[i].style.left=(i+1)*100;
    sceneArray[i].style.top = i*100+100;
    sceneArray[i].onclick= function(){console.log("fire212");
                                      if(extend1){
                                          console.log("scenelistener");
                                          currentArrow.rotate(degrees);
                                        currentArrow.scale(desiredLength/arrowLength,1);
                                      }
                                     };
console.log(sceneArray[i].onclick);
    document.getElementsByTagName('body')[0].appendChild(sceneArray[i]);
    sceneArray[i].style.zIndex =  -1;
    console.log(sceneArray[i]);
    }

Как видите, я должен хотя бы получить "fire212" в консоли, но даже этого не происходит.Что может быть не так?

Ответы [ 2 ]

0 голосов
/ 24 декабря 2011
for(var i=0; i<sceneNumber; i++){
    var a=i;
    if(i>2)
        a=i%3;
    sceneArray[i]=document.createElement('div');
    sceneArray[i].className="border"+a;
    if(i%2==1)
        sceneArray[i].style.left=0;
    else
        sceneArray[i].style.left=(i+1)*100;
    sceneArray[i].style.top = i*100+100;
    sceneArray[i].onclick=onclickevent();
console.log(sceneArray[i].onclick);
    document.getElementsByTagName('body')[0].appendChild(sceneArray[i]);
    sceneArray[i].style.zIndex =  -1;
    console.log(sceneArray[i]);
    }
 function onclickevent(){
           console.log("fire212");
           if(extend1){
           console.log("scenelistener");
           currentArrow.rotate(degrees);
           currentArrow.scale(desiredLength/arrowLength,1);
           }
         }
0 голосов
/ 24 декабря 2011

Вы должны реализовать что-то похожее на методы live () или on () JQuery. Нижеследующий пост может помочь вам.

http://www.alfajango.com/blog/exploring-jquery-live-and-die/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...