Функция jQuery "prop()" не работает?
Что я делаю неправильно? Пожалуйста, смотрите мою упрощенную скрипку здесь:
http://jsfiddle.net/a2q815fq/4/
function change() {
$('#mainmenu3').prop('data-badge','444');
}
Должен изменить значок данных на "444", но не?!
Я думаю, что делаю что-то действительно глупое, но я не вижу этого!
РЕДАКТИРОВАТЬ: Спасибо за ответы. Я думаю, что-то в Fiddle не работает, потому что не работает простой "alert('test')"?! Должен ли быть другой вызов функции "change()"?
ИЗМЕНИТЬ СНОВА: thx, attr() работает, а prop() нет. НО, если я решу удалить его, removeAttr() должен работать для него? Но не - смотрите здесь: http://jsfiddle.net/a2q815fq/19/
ПОСЛЕДНИЕ РЕДАКТИРОВАТЬ: Как упомянул SultanBaby, селектор был неправильным. Должно быть: #mainmenu3 a[значок данных]! СПАСИБО, ребята, вы сделали мой день!
3 ответа
Я не видел скрипку, прежде чем ответить, мой ответ был неверным. Эй, твой селектор неправильный в первую очередь. Правильный селектор должен быть "#mainmenu3 a[data-badge]"
и вы должны использовать attr
как я правильно упомянул ранее:
$('#mainmenu3 a[data-badge]').attr('data-badge','444');
Я также упоминал ранее, что data-badge
квалифицируется как действительный атрибут, но не как свойство.
Использование .data('badge', 444)
или же .attr('data-badge', 444)
Вы хотите это:
function change() {
$('#mainmenu3 a').attr('data-badge','444');
}
Поскольку атрибут является привязкой, а не элементом элемента списка. Обновленная скриптовая ссылка здесь.
PS: это также, кажется, работает, если я пропускаю a
часть селектора, однако в этом случае ваша разметка будет иметь недостатки, просто она выглядит правильно.