替换属性值后获取旧值的jQuery

时间:2017-03-17 09:53:28

标签: jquery

我在img之后使用属性为clb-prodctid,其值为280。

这是一个密切的形象&有背景关闭图像。

我正在使用函数将data-clb-prodctid="280"替换为data-clb-prodctid="281"

替换工作正常,并正确分配新值。

但是当我试图获得该值时,它给我的旧值为280。

页面刷新后,我得到新值为281。

<html>
<head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
</head>
<body>
    <img name="plus_icon" class="club_imgs imagefile club_imgs_1" data-clubprodnum="280" src="square.jpg">
    <span class="close_button close-btn-icon" onclick="removeproduct(this)" data-clb-prodctid="280">X</span>

    <script>
        function removeproduct(datas){                
            var remove_productId = jQuery(datas).data("clb-prodctid");

            alert(remove_productId);

            jQuery(".club_imgs_1").next('span').attr('data-clb-prodctid',281);                    
        }
    </script>
</body>
</html>

3 个答案:

答案 0 :(得分:1)

设置data而不是attr

 jQuery(".club_imgs_1").next('span').data('clb-prodctid',281);

答案 1 :(得分:0)

问题是因为您正在使用data()从jQuery缓存中读取数据,但attr()仅在DOM中设置新值。因此忽略了新值。

要解决此问题,请使用data()的设置器,如下所示:

&#13;
&#13;
jQuery(function($) {
  $('.close_button').click(function() {
    var remove_productId = $(this).data("clb-prodctid");
    console.log(remove_productId);
    $(".club_imgs_1").next('span').data('clb-prodctid', 281);
  });
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<img name="plus_icon" class="club_imgs imagefile club_imgs_1" data-clubprodnum="280" src="square.jpg">
<span class="close_button close-btn-icon" data-clb-prodctid="280">X</span>
&#13;
&#13;
&#13;

另请注意,在上面的示例中,首选使用不显眼的事件处理程序而不是过时的on*事件属性。

答案 2 :(得分:0)

此外,如果你使用.on(&#39;点击&#39;,())而不是.click方法会更好,当你使用动态元素时,这两种方法会有所不同。