2016-02-26 4 views
-2

Я пытаюсь получить значение атрибута родителя и отображать его как текст внутри дочернего div. Он возвращается как неопределенный.JQuery .parent(). Attr() return undefined

Мой HTML:

<div class="info" data-info="whatever I want displayed" ></div> 

Мой JQuery:

$(function(){ 
    var $info = $(this).parent().attr("data-info"); 
    $('.info').prepend($('<div class="new-info" >' + $info + '</div>')); 
});` 

Мой желаемый результат:

<div class="info" data-info="whatever I want displayed" > 
    <div class="new-info" >whatever I want displayed</div> 
</div> 
+4

Каков контекст 'этого'? Если это все javascript, который у вас есть, 'this' относится к объекту window, а не элементу dom. Как '.info' быть родителем, когда он пуст? –

ответ

1

Там нет родителя. И $(this) в первой строке не относится к информационному элементу. Сначала необходимо выбрать элемент .info, а затем добавить пример:

$(function(){ 
    // and if you already use html5 data attribute 
    // you can just select it value by using .data() 
    var 
    $info = $('.info'), 
    dataInfo = $info.data("info"); 

    $info.prepend('<div class="new-info" >' + dataInfo + '</div>'); 
}); 
+0

Если вы собираетесь это сделать, имеет смысл кэшировать '$ ('. Info')'. – Andy

+0

^... Done ...... –

+0

Спасибо, сейчас работает. Но что, если у меня есть несколько из этих элементов с разными значениями data-info? Кажется, он возвращает только значение первого элемента ко всем из них. – koenigsegg1