使用jQuery更新data属性的值

Ibr*_*mar 49 jquery

我有以下HTML代码:

<a class="toggle" href="#toggle">
    <img src="app/css/images/tock.png" alt="No" data-id="4" data-block="1">
</a>
Run Code Online (Sandbox Code Playgroud)

我想使用jQuery 更新srcdata-block属性的值.我该怎么做呢?

更新:因为我有很多图像元素,我想通过使用更新特定图像的值data-id.

Mar*_*lde 107

$('.toggle img').data('block', 'something');
$('.toggle img').attr('src', 'something.jpg');
Run Code Online (Sandbox Code Playgroud)

使用jQuery.datajQuery.attr.

为了便于理解,我将它们分别展示给你.

  • FWIW,我发现为了覆盖数据属性,你必须使用`.attr`而不是`.data`.这很令人困惑,因为jQuery能够将数据附加到元素,但如果数据属性已经存在,则可能不会反映在dom中. (25认同)
  • 对于任何想知道 @ugotchi 问题的人,答案是 jQuery 的“data”用于访问 jQuery 添加到 DOM 元素的“数据存储”。您可以使用它在 DOM 中的任何节点上存储您喜欢的任何数据。棘手的一点是,该数据存储从 DOM 节点上的“data”属性获取其初始值。因此,您可以使用“data()”“读取”数据属性,但如果您“写入”“data()”,则只是写入数据存储,而不是写入原始属性。 (5认同)
  • 你几乎就在那里:`$('toggle img [data-id ="4"]')` (4认同)
  • 要在上面的评论中显示我的意思,请参阅我的jsfiddle.元素数据的控制台日志显示更新的值,但是如果您在其数据集中查看元素的控制台日志(或使用元素检查器查看它),您将看到原始值.WAT http://jsfiddle.net/joesepi/kycajL4e/2/ (3认同)
  • 我从不使用.data,它总是打破.它根本没有看到更新,它对我来说从来没有奏效.我总是使用.attr (3认同)
  • 我只是遇到了这个问题,.data('block',something)不会更改DOM是有原因的。jQuery文档似乎没有对此进行解释,实现此功能的意义何在? (2认同)

JP *_*ons 15

$('.toggle img').each(function(index) { 
    if($(this).attr('data-id') == '4')
    {
        $(this).attr('data-block', 'something');
        $(this).attr('src', 'something.jpg');
    }
});
Run Code Online (Sandbox Code Playgroud)

要么

$('.toggle img[data-id="4"]').attr('data-block', 'something');
$('.toggle img[data-id="4"]').attr('src', 'something.jpg');
Run Code Online (Sandbox Code Playgroud)

  • 使用数据确实是一个很好的建议,但请记住,它不会修改原始的dom元素,这可能会产生与其他jquery有关的问题,这取决于dom的变化.http://www.peterbe.com/plog/data-and-attr-in-jquery (5认同)
  • 使用 jQuery.attr 而不是 jQuery.data,如本答案中所建议的那样,会导致某些浏览器出现错误。去过那里。 (2认同)

Alp*_*nel 13

我想更改 div 的宽度和高度。数据属性没有改变它。相反,我使用:

var size = $("#theme_photo_size").val().split("x");
$("#imageupload_img").width(size[0]);
$("#imageupload_img").attr("data-width", size[0]);
$("#imageupload_img").height(size[1]);
$("#imageupload_img").attr("data-height", size[1]);
Run Code Online (Sandbox Code Playgroud)

当心:

$("#imageupload_img").data("height", size[1]); //did not work
Run Code Online (Sandbox Code Playgroud)

没有设置

$("#imageupload_img").attr("data-height", size[1]); // yes it worked!
Run Code Online (Sandbox Code Playgroud)

这已经设置了。


Pau*_*ast 5

$('.toggle img').data('block', 'something').attr('src', 'something.jpg');
Run Code Online (Sandbox Code Playgroud)