代码之家  ›  专栏  ›  技术社区  ›  WayBehind

查找没有文本的所有按钮并替换为新文本

  •  2
  • WayBehind  · 技术社区  · 6 年前

    我有几个这样的按钮:

    <button class="my-btn" id="1"></button>
    <button class="my-btn" id="2">100</button>
    <button class="my-btn" id="3"></button>
    <button class="my-btn" id="4">200</button>
    <button class="my-btn" id="5"></button>
    

    在页面加载时,我需要查找所有没有文本(数字)的按钮并插入 0 . 我试过几种版本,但没有运气:

    $(document).ready(function() {
      if ($('.my-btn').text() == '') {
        $('.my-btn').text('0');
      }
    });
    
    3 回复  |  直到 6 年前
        1
  •  3
  •   Rory McCrossan Hsm Sharique Hasan    6 年前

    当前逻辑的问题是,您当前正在获取 text() 从所有 .my-btn 元素,因此 $('.my-btn').text() 正在回归 100200 '' 在这种情况下。

    要解决这个问题,需要单独循环所有元素。通过提供一个函数 文本() 它检查当前值是什么,并返回更新后的值应该是什么。试试这个:

    $(document).ready(function() {
      $('.my-btn').text(function(i, t) {
        return t.trim() || '0';
      });
    });
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <button class="my-btn" id="1"></button>
    <button class="my-btn" id="2">100</button>
    <button class="my-btn" id="3"></button>
    <button class="my-btn" id="4">200</button>
    <button class="my-btn" id="5"></button>
        2
  •  0
  •   imvain2    6 年前

    你需要循环你所有的按钮,我用一个循环来做这个。

    $(document).ready(function() {
    $('.my-btn').each(function(){
        if ($(this).text() == '') {
            $(this).text('0');
        }
        });
    });
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <button class="my-btn" id="1"></button>
    <button class="my-btn" id="2">100</button>
    <button class="my-btn" id="3"></button>
    <button class="my-btn" id="4">200</button>
    <button class="my-btn" id="5"></button>
        3
  •  0
  •   Maheer Ali    6 年前

    你可以使用 jQuery.each() 检查所有 <button> .

    $(document).ready(function() {
        const $myBtns = $('.my-btn');
        $myBtns.each((i,btn) => {
          if($(btn).text() === '') $(btn).text('0')
        })
    });
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <button class="my-btn" id="1"></button>
    <button class="my-btn" id="2">100</button>
    <button class="my-btn" id="3"></button>
    <button class="my-btn" id="4">200</button>
    <button class="my-btn" id="5"></button>