$('div').data('info', 1);
alert($('div').data('info'));
//this works
$('div[data-info="1"]').text('222');
//but this don't work
Я создаю элемент в JQuery. После этого я хочу добавить атрибут «данные». Он как и добавлен, но в DOM это не очевидно, и я не могу получить предмет, используя
$('div[data-example="example"]').html()
jquery
html
custom-data-attribute
Luntegg
источник
источник
.data()
если у вас нет причин использовать.attr()
..data()
не работает Он не добавляет атрибут данных в DOM, и я не получаю элемент по атрибуту данных ...data(key, val)
бы создать attr. Кто-нибудь знает, почему это не так?Note that this doesn't create an actual data-info attribute. If you need to create the attribute, use .attr():
Это было ключом к моей проблеме. Большое спасибо..data () из jQuery делает несколько вещей, но не добавляет данные в DOM как атрибут. При его использовании для получения атрибута данных первое, что он делает, - это создание объекта данных jQuery и установка значения объекта в атрибут данных. После этого он по существу отделен от атрибута данных.
Пример:
Если вы взяли значение атрибута с помощью
.data('foo')
, он вернул бы "bar", как вы и ожидали. Если вы затем измените атрибут с помощью,.attr('data-foo', 'blah')
а затем с помощью,.data('foo')
чтобы получить значение, он вернет «бар», даже если DOM говоритdata-foo="blah"
. Если вы используете.data()
для установки значения, оно изменит значение в объекте jQuery, но не в DOM.В основном,
.data()
для установки или проверки значения данных объекта jQuery. Если вы проверяете его, а у него его еще нет, он создает значение на основе атрибута данных, который находится в DOM..attr()
предназначен для установки или проверки значения атрибута элемента DOM и не касается значения данных jQuery. Если вам нужно, чтобы они оба изменились, вы должны использовать оба.data()
и.attr()
. В противном случае, придерживайтесь одного или другого.источник
в Jquery « данные » не обновляются по умолчанию:
Вместо этого вы бы использовали " attr " для обновления в реальном времени:
источник
источник
Использование
.data()
только добавит данные в объект jQuery для этого элемента. Чтобы добавить информацию к самому элементу, вам нужно получить доступ к этому элементу, используя jQuery.attr
или нативный.setAttribute
Чтобы получить доступ к элементу с установленным атрибутом, вы можете просто выбрать на основе этого атрибута, как вы заметили в своей записи (
$('div[data-info="1"]')
), но при использовании.data()
вы не можете. Для того, чтобы выбрать на основе.data()
настроек, вам нужно будет использовать функцию фильтра jQuery.jsFiddle Demo
источник
чтобы получить текст от
источник