Показать сообщение отдельно
  #10 (permalink)  
Старый 09.08.2015, 08:05
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от ligisayan
вообщем как я понял data меняет код js, а setAttribute html и все работают только до перезагрузки
Метод .data() jQuery вообще не имеет отношения к атрибуту элемента data-var когда речь идет об установке этим методом какой либо переменной.

Если у элемента есть атрибут data-var, то метод element.data('var') вернет значение этого атрибута (начиная с версии jQuery 1.4.3). При этом, если значение этого атрибута корректная json-строка, то метод сразу преобразует это значение в объект, например, если data-var="[2,3]", то .data('var') вернет массив. В случае, если имя атрибута будет иметь более сложное сочетание через дефис, типа data-var-name, то получить его можно в camelCase: element.data('varName').

Но записать/изменить значение в data-var метод .data('var', value) не может, вместо этого он создаст переменную var со значением value, которая будет привязана к элементу, для которого был вызван этот метод (можно привязать к элементу и несколько переменных .data({var1: value1, var2: value2, ....}) ). Для этого и предназначен данный метод. Удалить эту переменную у элемента можно методом .removeData(). А вот метод javascript setAttribute будет изменять значение именно атрибута.

Вот так это выглядит:

<!DOCTYPE HTML> 
<html> 
<head> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script> 
$(function() {
    var p = $('p');
    //получили значение атрибута
    alert(p.data('var'));
    //думаем, что изменяем его
    p.data('var', 55);
    //радуемся
    alert(p.data('var'));
    //а на самом деле воз и ныне там
    alert(p[0].getAttribute('data-var'));
});
</script>     
</head> 
<body>
<p data-var="22">Text</p>
</body> 
</html>

После того как элемент получил собственную jq-перменную "var" .data('var') будет обращаться уже к ней, а не к атрибуту data-var элемента.

Последний раз редактировалось laimas, 09.08.2015 в 08:18.
Ответить с цитированием