使用jQuery更改数据属性

时间:2014-04-28 20:13:10

标签: javascript jquery html

我有这个HTML:

<input id='myId' type='button' data-this-page='myPage' />

如果我想将myPage更改为其他内容,我会尝试这样做:

$("#viewer_next_page").data('this-page', 'newPage' );

这是正确的方法,因为似乎没有任何事情发生。我确保在jQuery调用之前创建了元素id。

6 个答案:

答案 0 :(得分:2)

jQuery的.data()方法只会将data-属性值计入帐户 - 这是第一次。但是,当您设置它时,它会在DOM元素上设置实际的高级数据。您甚至可以使用.data()设置复杂的对象和函数,您可以使用属性。之后,继续使用.data()方法提取值,您就可以了。

如果您坚持使用属性,请使用其他几个答案中提到的.attr()方法。

答案 1 :(得分:1)

尝试attr

$("#viewer_next_page").attr('data-this-page','newPage');

答案 2 :(得分:1)

你试过吗

$("#viewer_next_page").attr('data-this-page', 'newPage' );

答案 3 :(得分:1)

它已更新。您的HTML不会重新呈现。如果你看看这个:

http://jsfiddle.net/nH9US/

HTML

<input id='myId' type='button' data-this-page='myPage' />

JS

console.log($("#myId").data("this-page"));
$("#myId").data('this-page', 'newPage' );
console.log($("#myId").data("this-page"));

您每次都会看到不同的输出:

MYPAGE

newPage

答案 4 :(得分:1)

这是正确的方法。您会注意到属性本身不会改变。 jQuery在内部管理data-*属性。在页面加载时,所有data-*属性都在内部读入jQuery。从那时起通过.data(...)方法进行操作,操纵内部对象。因此,该属性似乎没有变化。但是,只要您将来访问这些属性var page = $('#...').data('this-page');,就会获得正确的值。

答案 5 :(得分:0)

$("#viewer_next_page").attr('data-this-page', 'newPage' );