如何将这些按钮的效果更改为 select 以便删除按钮?

How can I change the effect of those buttons to the select so I can delete the buttons?

我想使用 select 而不是按钮来翻译​​此页面,我想删除这些按钮。按钮工作正常唯一的问题是他们不应该在那里,而应该只有 select.

var arrLang = {
  'en': {
    'home': 'Home',
    'about': 'About Us',
    'contact': 'Contact Us',
    'desc': 'This is my description'
  },
  'km': {
    'home': 'ទំព័រដើម',
    'about': 'អំពីយើង',
    'contact': 'ទំនាក់ទំនងយើងខ្ញុំ',
    'desc': 'នេះគឺជាអត្ថបទរបស់ខ្ញុំ'
  }
};

// Process translation
$(function() {
  $('.translate').click(function() {
    var lang = $(this).attr('id');

    $('.lang').each(function(index, item) {
      $(this).text(arrLang[lang][$(this).attr('id')]);
    });
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button id="en" class="translate">English</button>
<button id="km" class="translate">ខ្មែរ</button>
<select id="language" class="translate" style="">
  <option value="en">English</option>
  <option value="km">ខ្មែរ</option>
</select>

<ul>
  <li class="lang" id="home">Home</li>
  <li class="lang" id="about">About Us</li>
  <li class="lang" id="contact">Contact Us</li>
</ul>
<p class="lang" id="desc">This is my description</p>

<br>

这里有几件事:

  1. 删除按钮
  2. 将事件侦听器更改为 onchange,因为它将在 select 值更改时触发。
  3. 获取 .val() 而不是 select 的 id(保存您的 lang 密钥)

以下是这些更改的示例:

var arrLang = {
  'en': {
    'home': 'Home',
    'about': 'About Us',
    'contact': 'Contact Us',
    'desc': 'This is my description'
  },
  'km': {
    'home': 'ទំព័រដើម',
    'about': 'អំពីយើង',
    'contact': 'ទំនាក់ទំនងយើងខ្ញុំ',
    'desc': 'នេះគឺជាអត្ថបទរបស់ខ្ញុំ'
  }
};

// Process translation
$(function() {
  $('.translate').on("change", function() {
    var lang = $(this).val();

    $('.lang').each(function(index, item) {
      $(this).text(arrLang[lang][$(this).attr('id')]);
    });
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select id="language" class="translate" style="">
  <option value="en">English</option>
  <option value="km">ខ្មែរ</option>
</select>

<ul>
  <li class="lang" id="home">Home</li>
  <li class="lang" id="about">About Us</li>
  <li class="lang" id="contact">Contact Us</li>
</ul>
<p class="lang" id="desc">This is my description</p>

<br>

在您的函数中,您使用按钮的 ID select 语言。如果您想将其更改为 select 字段,您可以改用 select 选项的值。下面两种方式对比:

var arrLang = {
  'en': {
    'home': 'Home',
    'about': 'About Us',
    'contact': 'Contact Us',
    'desc': 'This is my description'
  },
  'km': {
    'home': 'ទំព័រដើម',
    'about': 'អំពីយើង',
    'contact': 'ទំនាក់ទំនងយើងខ្ញុំ',
    'desc': 'នេះគឺជាអត្ថបទរបស់ខ្ញុំ'
  }
};

// Process translation
$(function() {
  $('button.translate').click(function() {
    var lang = $(this).attr('id');

    $('.lang').each(function(index, item) {
      $(this).text(arrLang[lang][$(this).attr('id')]);
    });
  });
});
$(function() {
  $('select.translate').on('change', function () {
     var lang = $(this).val();
     
     $('.lang').each(function(index, item) {
        $(this).text(arrLang[lang][$(this).attr('id')]);
      });
   })
});
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<button id="en" class="translate">English</button>
<button id="km" class="translate">ខ្មែរ</button>
<select id="language" class="translate" style="">
    <option value="en">English</option>
    <option value="km">ខ្មែរ</option>
</select>

<ul>
  <li class="lang" id="home">Home</li>
  <li class="lang" id="about">About Us</li>
  <li class="lang" id="contact">Contact Us</li>
</ul>
<p class="lang" id="desc">This is my description</p>

您需要为 select 使用 .change() 才能正常运行。 我已经对您的代码进行了足够的更改。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Multiple Languages with Jquery and Json</title>
  <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
  <script type="text/javascript">
    var arrLang = {
      'en': {
        'home': 'Home',
        'about': 'About Us',
        'contact': 'Contact Us',
        'desc': 'This is my description'
      },
      'km': {
        'home': 'ទំព័រដើម',
        'about': 'អំពីយើង',
        'contact': 'ទំនាក់ទំនងយើងខ្ញុំ',
        'desc': 'នេះគឺជាអត្ថបទរបស់ខ្ញុំ'
      }
    };
    
    // Process translation
    $(document).ready(()=>{
      $("#language").change(function(){
        var lang = $(this).val()
        $('.lang').each(function(index, item){
          $(this).text(arrLang[lang][$(this).attr('id')])
        });
      })
    });
  </script>
</head>
<body>
  <select id="language" class="translate" style="">
      <option value="en">English</option>
      <option value="km">ខ្មែរ</option>
  </select>

  <ul>
    <li class="lang" id="home">Home</li>
    <li class="lang" id="about">About Us</li>
    <li class="lang" id="contact">Contact Us</li>
  </ul>
  <p class="lang" id="desc">This is my description</p>

  <br>
</body>
</html>