2012-06-22 4 views
1
<script type="text/javascript"> 
$(".inventory-notes").bind("click", function() { 
    if($(this).text().length > 0) { 
     alert($(this).text()); 
     alert($(this).closest(".inventory-notes").children().text()); 
    } 
}); 
</script> 

Пример таблицыПолучение неизвестного дочернего div от родителя?

<table id="inventory" class="table"> 
    <thead> 
     <tr> 
      <th>Item</th> 
      <th>Value</th> 
      <th>Usage</th> 
      <th>Notes</th> 
     </tr> 
    </thead> 
    <tbody> 
     <tr class="items"> 
      <td>Hatchet</td> 
      <td>24,000 Gold</td> 
      <td>Woodcutting</td> 
      <td><div class="inventory-notes"><div id="299"><img src="addnotes.png"></div></div></td> 
     </tr> 
    </tbody> 
</table> 

Как я могу получить значение 299 от ребенка DIV в inventory-notes? В таблице действительно содержится не менее 1000 строк элементов, каждый из которых содержит случайный идентификатор.

Я использую JQuery 1.6.2, так что я не могу использовать .on() function.

+0

Это значение 'id' является незаконным. Они не могут начинаться с цифр. Это может вызвать проблемы с попыткой доступа к нему. – Sampson

+0

о, ничего себе, я забыл об этом ... У меня была такая же проблема на прошлой неделе. Я попробую префикс. Спасибо, Джон. – Kyle

+0

Кроме того, JavaScript не имеет смысла. Поиск ближайших '.inventory-notes' в' .inventory-notes'? Работа над текстовыми узлами? а? –

ответ

1

Поскольку вы используете JQuery 1.6.2, я хотел бы использовать .delegate:

$("#inventory").delegate(".inventory-notes", "click", function(){ 
    var id = $(this).find("div").prop("id"); 
}); 

Поскольку вы собираетесь имеют более 1000 строк, вы не хотите привязывать событие к фактическим строкам, в результате чего более 1000+ обработчиков.

+0

Ничего себе это впечатляет. Большое спасибо! – Kyle

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