2016-08-09 4 views
0

Я пытаюсь получить значение из тега HTML. Не сам текст, а значение атрибута. Что я делаю не так?Как получить значение атрибута из HTML-тегов

$('label').click(function() { 
 
    $('p').text(($(this).val())); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<label value="hello">click</label> 
 
<p></p>

+1

Как примечание: 'value' не являются действительными атрибутами [' label'] (https://html.spec.whatwg.org/ многостраничный/forms.html # заместитель этикетки-элемент). Допустимыми атрибутами являются 'for', общие [Глобальные атрибуты] (https://html.spec.whatwg.org/multipage/dom.html#global-attributes) и [атрибут пользовательских данных] (https: //html.spec .whatwg.org/multipage/dom.html # custom-data-attribute) ('data- *') –

+0

Использование 'data- *' позволяет использовать любую произвольную строку. ех. 'data-value =" hello "' – zer00ne

+0

@ zer00ne Что значит использовать 'data- *'? Поместите его где значение? Как мне вернуть значение в JQuery? –

ответ

2

Использование data-* это позволяет использовать любую строку. ех. data-value="hello". Это справедливо и универсально на любом элементе AFAIK. Метод JQuery использовать это .data()

$('label').click(function() { 
 
    $('p').text($(this).data('value')); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<label data-value="hello">click</label> 
 
<p></p>

3

labels не values, input и другие form элементов могут иметь значение. Таким образом, в вашем случае это функция jQuery attr, чтобы получать значения атрибутов. И нет необходимости в дополнительных скобках вокруг этого геттера.

$('label').click(function() { 
 
    $('p').text($(this).attr("value")); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<label value="hello">click</label> 
 
<p></p>

0
$('label').click(function() { 
    var value = $(this).attr('value'); 
}); 

Кроме того, я не думаю, что value является допустимым атрибутом на label элемента.

Без JQuery ...

Array.from(document.querySelectorAll('label')).forEach((label) => { 
    label.addEventListener('click',() => { 
     let value = label.getAttribute('value'); 
    }); 
}); 
+1

Как насчет 'div'? У этого атрибута значения? –

+0

@Jimenemex Они обычно входят в элементы ввода. – alex

+0

Элементы @Jimenemex no ['div'] (https://html.spec.whatwg.org/multipage/semantics.html#the-div-element) имеют только [глобальные атрибуты] (https: //html.spec. whatwg.org/multipage/dom.html#global-attributes) –

0

Вы можете сделать, как это в чистом JS;

var lab = document.getElementsByTagName("label")[0], 
 
    pel = document.getElementsByTagName("p")[0]; 
 
lab.onclick = e => pel.textContent = e.currentTarget.getAttribute("value");
<label value="hello">click</label> 
 
<p></p>