я использую JQuery, у меня есть простой списокJQuery appendTo с некоторыми данными = добавить элемент без данных
<ul id="list">
<li data-kind="foo">Foo1</li>
<li data-kind="foo">Foo2</li>
<li data-kind="foo">Foo3</li>
</ul>
, в котором я хочу, чтобы добавить новый элемент
<li data-kind="foo">Foo4</li>
Я думаю, это код должен делать эту работу
new_foo = jQuery('<li/>').data('kind', 'foo').text('Foo4');
new_foo.appendTo(jQuery('#list'));
, но это работает только половина, это правильно добавляет новый <Li> с внутренней «Foo4», но это не добавляет данные в своем роде в < литий >
Проверка в консоли Chrome я вижу, что new_foo имеет данные-тип = «Foo», но на самом деле я не могу видеть его в Хром инспектор, и если я пытаюсь в консоли, чтобы сделать
$('#list').find('li')
Я вижу все детали с данными роде КРОМЕ свеже добавил один.
Любая идея, почему appendTo, кажется, игнорирует поля данных?
Спасибо!
EDIT1 Благодаря предложению Gautam3164, я видел, что использование присоединять() вместо appendTo() он работает. Кажется, что appendTo() не сохраняет атрибуты данных при Append() делает
EDIT2 Исправлена ошибка в моем примере коды, было «сообщения» переменного, но это было «new_foo» один
EDIT3 Мне нужно наличие data-kind = "foo", потому что у меня есть флажок (с классом 'filter_switch') для отображения/скрытия элементов, имеющих data-kind = "foo". Когда я использовал .data(), он не работал со свежими созданными элементами, при использовании .attr() он работает так, как ожидалось.
код что-то вроде:
jQuery('.filter_switch').click(function(){
elem = jQuery(this);
if (elem.prop('checked')) {
jQuery('li[data-kind="' + elem.data('kind') + '"]:hidden').show();
} else {
jQuery('li[data-kind="' + elem.data('kind') + '"]:visible').hide();
}
Большое спасибо всем, это был мой первый вопрос на StackOverflow и вы были удивительные и очень полезно! :)
'message.appendTo (JQuery ('# список'));' - то, что 'message'? Также я не уверен, что 'data' производит любые атрибуты, вы можете захотеть' attr ('data-kind', 'foo') '. –
'.data()' хранит данные внутренне, он фактически не будет помещать атрибут в этот элемент. Если элемент имеет 'data- *' при загрузке, они будут храниться в объекте 'data()'. Вы можете использовать '.attr()', если вы действительно хотите увидеть 'data- * ', но я не думаю, что есть много очков. – billyonecan
Просто глядя на ваше редактирование, это не имеет никакого отношения к' append () 'или' appendTo() ', это был факт, что в его примере он добавлял строку, содержащую' data-kind', тогда как в вашем вы создавали элемент, а затем (правильно) с помощью '.data() ' – billyonecan