jQuery函数" prop()"不起作用?

时间:2015-01-03 15:09:13

标签: jquery prop

我做错了什么?请在这里查看我的简化小提琴:

http://jsfiddle.net/a2q815fq/4/

function change() {
  $('#mainmenu3').prop('data-badge','444');
}

应该将数据徽章更改为" 444",但不是吗?!

我认为我做的事情非常愚蠢,但我无法看到它!

编辑:谢谢你的回答。我认为,小提琴中的某些东西不起作用,因为一个简单的警报('测试')"不起作用?!是否应该对函数进行不同的调用" change()"?

再次编辑:thx,attr()正在工作,而prop()没有。但是,如果我选择删除它,removeAttr()应该适用它吗?但是没有 - 看到这里: http://jsfiddle.net/a2q815fq/19/

LAST-EDIT:正如SultanBaby所说,选择器不正确。应该是:#mainmenu3 a [数据徽章]!谢谢你们,你们让我的一天成功!

3 个答案:

答案 0 :(得分:2)

使用.data('badge', 444).attr('data-badge', 444)

答案 1 :(得分:1)

在回答之前我没有看到小提琴,我的回答是错误的。嘿,你的选择器首先是错误的。正确的选择器应该是"#mainmenu3 a[data-badge]",您应该像我之前正确提到的那样使用attr

$('#mainmenu3 a[data-badge]').attr('data-badge','444');

我之前也提到data-badge有资格作为有效属性,但不属于属性。

答案 2 :(得分:0)

你想要这个:

function change() {
  $('#mainmenu3 a').attr('data-badge','444');
}

因为属性是锚点,而不是列表项元素。更新了小提琴链接here

PS:如果我遗漏选择器的a部分似乎也有效,但是在这种情况下,你的标记会有缺陷,只是看起来正确。< / p>