2013-04-19 3 views
2

Я хотел бы получить атрибуты div, динамически сгенерированные с помощью AJAX. Вот что я пытался:Получить атрибуты div, динамически сгенерированные с помощью AJAX

$.getJSON('/json/layout', function(data) { 
    $('#layout').append(data); 
}); 

Здесь data возвращение AJAX это что-то вроде:

<div id="my_div" name="my_name"></div> 

Я проверил с Хрома «Осмотрите элемент» и, кажется, #my_div был создан и добавлен к #layout. Но когда я печатаю имя #my_div с

console.log($('#my_div').attr('name')); 

Я получил undefined в консоли. Я новичок в javascript, поэтому не знаком с основами JS и AJAX. Могу ли я получить атрибуты элемента, который динамически генерируется? Если нет, есть ли способ обхода этого?

+0

первая попытка напечатать $ ('# my_div') only.then теперь мы можем установить значение или нет – PSR

+0

, когда вы печать? Я надеюсь, что в обратном вызове ajax – karaxuna

+0

Где отображается 'console.log ($ ('# my_div'). Attr ('name'));' строка? Если он находится вне функции успеха '$ .getJSON()', то это условие гонки, так как 'A'JAX является' Aсинхронным, т.е. вы запрашиваете имя до того, как вызов AJAX завершился, поэтому имя 'undefined' – andyb

ответ

1

Попробуйте это:

$(data).attr('name') 

EDIT:

$.getJSON('/json/layout', function(data) { 
    $('#layout').append(data); 
    console.log($('#my_div').attr('name')); // will log result 
    console.log($(data).attr('name')); // same 
}); 

console.log($('#my_div').attr('name')); // will log undefined 
+0

почему это? почему не $ ('# my_div'). attr ('name') ?? –

+0

@Baadshah см. Отредактированный ответ – karaxuna

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