2014-11-27 2 views
0

Я пытаюсь получить с помощью JQuery .attr("msg_g") из последнего дочернего элементаJQuery - Найти .attr последнего ребенка-элемент

<div id="append"> 
    <div class="h" msg_g="1">A</div> 
    <div class="y" msg_g="2">B</div> 
    <div class="h" msg_g="3">C</div> 
</div> 

Я уверен, что ниже сценарий должен работать, но возвращает меня неопределенного

var msg_g = $("#append div:last-child").attr("msg_g"); 
console.log(msg_g); 

Я использую скрипт ниже для проверки, если последний ребенок «hasClass» и работает отлично, почему не работает на .attr()

Пример .hasClass()

if($("#append div:last-child").hasClass("y")){ 
    var last_msg_class="by_you"; 
}else if($("#append div:last-child").hasClass("h")){ 
    var last_msg_class="by_friend"; 
} 
+0

первую очередь его лучше, если вы используете пользовательские атрибуты для добавления '' данных-префикс перед ним. Его более распространенное применение. – Mivaweb

+0

Ваш код работает: http://jsfiddle.net/a1u7x28c/, где именно вы называете 'var msg_g = $ (" #append div: last-child ") .attr (" msg_g ");'? – ekad

+0

Копия моего последнего комментария: Благодарим за ответ, но в моем случае это не сработает, я использую это событие onClick для использования функции и в этой функции, чтобы получать значения из разных элементов. С приведенным выше примером данных - * работает, но не с attr, не может найти логику –

ответ

1

Вместо добавления msg_g атрибута, попытайтесь использовать атрибут data-*.

Измените HTML как: -

<div id="append"> 
<div class="h" data-msg_g="1">A</div> 
<div class="y" data-msg_g="2">B</div> 
<div class="h" data-msg_g="3">C</div> 
</div> 

и попробовать это в Jquery: -

var msg_g = $("#append > div:last").data("msg_g"); 

и убедитесь, что вы Jquery код внутри document.ready блока.

+1

Ваш селектор ошибочен – Barmar

+0

@ Barmar..corrected..thanks для указания .. !!! –

+0

Как это решит проблему? Хотя я согласен с тем, что атрибуты data-XXX являются предпочтительными, исходный код должен работать. Это должен быть комментарий, а не ответ, и кто-то уже сделал этот комментарий. – Barmar

1

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

$(document).ready(function() { 
    $("#append > div:last").attr("msg_g"); 
}); 
0

Я проверил его и его работу. Убедитесь, что ваш код выполняется, когда элемент DOM готов.

$(document).ready(function() { 
    var msg_g = $("#append div:last-child").attr("msg_g"); 
    alert(msg_g); 
}); 

Проверьте это: http://jsfiddle.net/ytj8z0j7/

+0

Спасибо за ответ, но в моем случае не работает, я использую его в событии onClick для использования функции и в этой функции получать значения из разных элементов. В приведенном выше примере данные - * работают, но не с attr, не могут найти логику. –