如何替换 .data javascript 函数中的逗号(使用 .replace)

How to replace comma inside .data javascript function (with .replace)

在对 div 列表进行排序时,我试图从提取的值中替换逗号(使用 .data)。

带逗号的值无法正确排序。如何使用替换函数正确排序 div?

 <script>   
    $(".button").click(function(){
         var divList = $(".cell");
         divList.sort(function(b, a){
         return $(a).data("number")-$(b).data("number")
         });
    $(".table").html(divList);
    });
</script>

<div class="button">Click</div>
<div class="table">
    <div class="cell" data-number="1,942"></div>
    <div class="cell" data-number="42"></div>
    <div class="cell" data-number="161"></div>
    <div class="cell" data-number="5,382"></div>
    <div class="cell" data-number="892"></div>
    <div class="cell" data-number="4"></div>
    <div class="cell" data-number="38"></div>
</div>

我试过这个:

<script>    
    $("button").click(function(){
        var divList = $(".cell");
        divList.sort(function(b, a){
        return $(a).data("number").replace(/,/g, '')-$(b).data("number").replace(/,/g, '')
    });
    $(".table").html(divList);
});
</script>

尝试以下操作:

$(".button").click(function() { // You missed the . for class here
  $(".cell").each(function() { // Loop through each cell
    // Set the data-number attribute
    $(this).attr('data-number', $(this).attr('data-number').replace(',', ''));
  });
});

这是DEMO

您应该使用 toString(),然后使用 replace() 函数,如下所示。顺便说一句,您 html 的第一行可能是您使用 div 而不是 button

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<button>Click</button>
<div class="table">
    <div class="cell" data-number="1,942">1,942</div>
    <div class="cell" data-number="42">42</div>
    <div class="cell" data-number="161">161</div>
    <div class="cell" data-number="5,382">5,382</div>
    <div class="cell" data-number="892">892</div>
    <div class="cell" data-number="4">4</div>
    <div class="cell" data-number="38">38</div>
</div>

<script>
    $("button").click(function () {
        var divList = $(".cell");
        divList.sort(function (b, a) {
            return $(a).data("number").toString().replace(/,/g, '') - $(b).data("number").toString().replace(/,/g, '');
        });
        $(".table").html(divList);
    });
</script>