2014-02-10 3 views
0

enter image description here Я пытаюсь получить значение в самых внутренних div с именем класса 'myData'. Эти divs загружаются динамически и могут быть на любом уровне вложенности. У внешнего div есть id «main». Это то, что я пробовал до сих пор, и это дает мне только классные классы divs, которые являются непосредственными детьми основного div.Ссылка на div по имени его класса на любом уровне

UPDATE: Мне нужно получить ссылку на fc-event-time div, выделенную на изображении.

$('#main div').each(function() { 
alert($(this).text()); 

});

Спасибо,

+1

Вы сказали, что «внутренний» ... вы имеете в виду, как это? http://jsbin.com/wihu/1/edit – m59

ответ

1

Просто добавьте .myData до конца:

$('#main div.myData').each(function() { 
    alert($(this).text()); 

Здесь вы сможете найти jsfiddle как доказательство концепции: http://jsfiddle.net/66psS/

======= Обновление от ком

На какой стадии вы называете эту функцию .each()? Это в документе. Уже? Загружаются ли эти данные через AJAX и могут не существовать при запуске .each()?

// Means run this when the document is ready... 
$function(){ 
    $('#main div.myData').each(function() { 
     alert($(this).text()); 
}); 

Моя ставка заключается в том, что данные еще не указаны на странице при ее выполнении.

+0

Спасибо, Джей, ваш код хорошо работает в скрипке. Но по какой-то причине я всегда получаю 0 на своей странице. см. обновленный вопрос. –

+0

@BishnuPaudel Обновлено сообщение немного с некоторыми мыслями. – Timeout

+0

Вы правы. Потрясающие! –

0

Вы можете попробовать сделать:

$('#main div.myData').each(function() { 
    alert($(this).text()); 
}); 
+0

Если у вас есть несколько элементов с идентификатором main, вы делаете что-то неправильно ... – GregL

+0

@GregL Вы правы, исправлены ... – Felix

0

Вы можете использовать:

$('#main .myData').each(function() { 
alert($(this).text()); 
}); 

Update: Если другие элементы имеют .myData класс тоже:

$('#main div.myData').each(function() { 
alert($(this).text()); 
}); 
+0

Это не будет ограничивать результаты *** div *** этим именем класса. – Timeout

0

на основе добавленного к вашему вопросу скриншоте, это выглядит, как вы можете просто использовать :

$(".fc-event-time").each(function() { 
    alert($(this).text()); 
}); 

для создания списка div, имеющих это имя класса. Если вы хотите, чтобы объем его только в определенной иерархии, вы можете претендовать селектор с любой родитель вы хотите, чтобы ограничить область применения, но это не является обязательным:

$("#main .fc-event-time").each(function() { 
    alert($(this).text()); 
}); 

Если этот контент динамически добавляется, то ДОЛЖЕН запускать этот запрос ПОСЛЕ того, как содержимое вставляется в DOM. Как вы работаете с синхронизацией, если контент динамически добавляется, зависит от того, как он добавлен и какие события у вас есть, из которых вы можете инициировать ваш запрос.

Если это содержимое находится в исходном HTML-документе, то вы должны запустить запрос после загрузки DOM. Вы можете разместить JavaScript в конце <body> или вы можете использовать JQuery ждать DOM для загрузки:

$(document).ready(function() { 
    $("#main .fc-event-time").each(function() { 
     alert($(this).text()); 
    }); 
}); 
Смежные вопросы