无法使用jQuerydata()API设置数据属性怎么办?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (18)

我在MVC视图中获得了以下字段:

@Html.TextBoxFor(model => model.Course.Title, new { data_helptext = "Old Text" })</span>

在一个单独的js文件中,我想将该data-helptext属性设置为字符串值。这是我的代码:

alert($(targetField).data("helptext"));

$(targetField).data("helptext", "Testing 123");

alert()调用工作正常,它显示了一个警告对话框中的文本“旧文本”。但是,将data-helptext属性设置为“测试123” 的调用不起作用。“旧文本”仍然是属性的当前值。

我是否错误地使用了对data()的调用?我在网上查了这个,我看不出我做错了什么。

这是HTML标记:

<input data-helptext="Old Text" id="Course_Title" name="Course.Title" type="text" value="" />
提问于
用户回答回答于

.data()文档

在jQuery 1.6中修改了嵌入破折号属性的处理方式,以符合W3C HTML5规范。

因此,<div data-role="page"></div>以下是事实$('div').data('role') === 'page'

我相当肯定这$('div').data('data-role')在过去有效,但似乎不再是这种情况。

HTML

<div id="changeMe" data-key="luke" data-another-key="vader"></div>
<a href="#" id="changeData"></a>
<table id="log">
    <tr><th>Setter</th><th>Getter</th><th>Result of calling getter</th><th>Notes</th></tr>
</table>

JavaScript(jQuery 1.6.2+)

var $changeMe = $('#changeMe');
var $log = $('#log');

var logger;
(logger = function(setter, getter, note) {
    note = note || '';
    eval('$changeMe' + setter);
    var result = eval('$changeMe' + getter);
    $log.append('<tr><td><code>' + setter + '</code></td><td><code>' + getter + '</code></td><td>' + result + '</td><td>' + note + '</td></tr>');
})('', ".data('key')", "Initial value");

$('#changeData').click(function() {
    // set data-key to new value
    logger(".data('key', 'leia')", ".data('key')", "expect leia on jQuery node object but DOM stays as luke");
    // try and set data-key via .attr and get via some methods
    logger(".attr('data-key', 'yoda')", ".data('key')", "expect leia (still) on jQuery object but DOM now yoda");
    logger("", ".attr('key')", "expect undefined (no attr <code>key</code>)");
    logger("", ".attr('data-key')", "expect yoda in DOM and on jQuery object");

    // bonus points
    logger('', ".data('data-key')", "expect undefined (cannot get via this method)");
    logger(".data('anotherKey')", ".data('anotherKey')", "jQuery 1.6+ get multi hyphen <code>data-another-key</code>");
    logger(".data('another-key')", ".data('another-key')", "jQuery < 1.6 get multi hyphen <code>data-another-key</code> (also supported in jQuery 1.6+)");

    return false;
});

$('#changeData').click();

用户回答回答于

我遇到了严重的问题

.data('property', value);

这不是设置data-property属性。

开始使用jQuery的.attr()

获取匹配元素集中第一个元素的属性值,或为每个匹配元素设置一个或多个属性。

.attr('property', value)

设置值和

.attr('property')

检索值。

扫码关注云+社区