javascript - 如何在点击时获取数据属性值?

标签 javascript jquery html

我有一个链接,当按下时,一个 div 的文本和数据属性的值正在改变。 当按下时我有另一个链接我得到那些改变的值。 这是代码:

<a class="first" href="#">change value</a>
<a class="second" href="#">get value</a>
<div class="value" data-test="test">test</div>

$(document).ready(function() {
    $('.first').on('click', function(e) {
        e.preventDefault();
        $('.value').html($(this).text()).attr('data-test',$(this).text());    
    });

    $('.second').on('click', function(e) {
        e.preventDefault();

        $value = $('.value').text();
        $data = $('.value').data('test');
        alert($data);
    });
});

http://jsfiddle.net/4daoqzc8/2/

问题是,在更改值后,我可以获得 div 的新文本值,但数据属性的值与加载 dom 时的值保持不变。 如何获取数据属性的新值?

最佳答案

jQuery 只会检索值 .data('test')data-test 属性,如果它还没有存储的话。所以它提供了 .removeData方法,您可以在更改属性时调用该方法以强制 jQuery 下次再次从属性中检索 .data('test'):

$('.value').html($(this).text())
    .removeData('test')
    .attr('data-test', $(this).text());

http://jsfiddle.net/mblase75/8mp6k2w2/


但是,最好保持一致并使用 .attr().data() 来设置和获取值:

$('.value').html($(this).text())
    .data('test', $(this).text());

关于javascript - 如何在点击时获取数据属性值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28094284/

相关文章:

javascript - 对嵌套对象文字属性感到困惑

javascript - 单击 ATBar 按钮时更改 div 的 CSS

javascript - 如何在切换后使用 fullPage.js 移动到节内的特定 div

美国的javascript时区脚本如何进行夏令时

javascript - 如何将 svg 中的 font Awesome 图标导出为 png?

javascript - 试图获取动态幻灯片文本。容器上没有固定高度。见 fiddle

jQuery,查找元素是否有任何文本

javascript - jQuery 帖子中的错误 : Could not convert JavaScript argument

php - 获取 mp4 文件标签

jquery - 使用 $.click() 动态插入的 DOM 元素不可点击