2012-07-12 4 views
4

Я не могу понять, как это сделать, но я создаю кнопки, которые при нажатии добавляют новый div к странице, содержащей текстовое поле. Это работает отлично, но то, что я тогда хочу сделать, - это если пользователь нажимает на div, я хочу, чтобы идентификатор div был выведен в поле предупреждения. Код ниже.Выбор динамически созданных divs по ID

HTML

 <table> 
    <td> 
    <ul id ="firstColumn"> 
        <div id="identifier"> 
        </div> 
       </ul> 
      </td> 
      <td> 
       <ul id ="secondColumn" width="5%"> 
        <li><input type="button" class="formCreationButton" id="textAdd"  value="Single line text" /></li> 
    </td> 
    <ul> 
    </table> 

JQuery, который добавляет DIV и текстовое поле выглядит следующим образом, который работает отлично.

$('#textAdd').click(function() { 
       var newdiv = document.createElement('div'); 
       newdiv.innerHTML = "Textbox " + textBoxCounter + " <br><div id='container "+counter+"' class='container'><li><input type='text' value='TEXT' name='textBox " + textBoxCounter +"onclick='display(this)'></li></div></br>"; 

       document.getElementById("identifier").appendChild(newdiv); 
       textBoxCounter++ 
       counter++; 
      }); 

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

 $(".container > div").click(function(){ 
       var divID = this.id; 
       alert(divID); 
       // do other stuff that needs to be done 
      }); 

Единственное, что происходит, когда я нажимаю на div, заключается в том, что появляется предупреждение о «содержании». Мне нужно, чтобы оно содержало что-то вроде «container1» или «container2» и т. Д.

В любом случае, за любую предоставленную помощь мы будем рады. Довольно новичок в jQuery, так что у вас есть проблемы с вещами, которые могут показаться простыми для других.

ответ

3

.on API Виль сделать трюк: http://api.jquery.com/on/демоhttp://jsfiddle.net/eqDKP/1/

Пожалуйста, обратите внимание, что HTML таблица отсутствует tr тег.

Надеется, что это помогает :)

код

$(".container > div").on('click',function(){ 
       var divID = this.id; 
       alert(divID); 
       // do other stuff that needs to be done 
      }); 
+0

+1 для записки :) – undefined

+1

@undefined Спасибо и теперь так на его моё время спать ура +1 к вам, –

+0

Хм, не знаю, почему, но .on бросает ошибку, говоря «Uncaught TypeError: Object # не имеет метода« on ». Любые идеи почему? Кроме того, tr просто отсутствует, потому что таблица намного больше, вырезать большую часть ее, чтобы было легче читать :). Также большое спасибо за быстрый ответ! – Chaney

2

вы должны делегировать click события для вновь создаваемых элементов:

.on(events [, selector] [, data] , handler(eventObject))

$(".container").on('click', "div", function(){ 
    var divID = this.id; 
    alert(divID); 
}); 
Смежные вопросы