使用jquery - 语言选择器更改多个div的显示样式

Change the display style of multiple divs using jquery - language selector

编辑 所以我已经解决了它 - 如果有人通过搜索找到它,供将来参考: 我给了我想在页面加载时隐藏的每种语言的父级 div ('divGer' + 'divFre') 'style="display:none;"' - 然后当 selecting 每个语言 link javascript 显示那些 divs.

再次感谢您的帮助!

已更新

嗨,

所以,经过一些摆弄和更多的谷歌搜索,我设法让它工作了。每种语言的 2 divs,我包裹在一个父 div 中。和下面的 Javascript 有效 - 但是当你第一次加载页面时它显示所有语言,然后显示 1 种语言取决于你在顶部 select 的语言。

HTML:

<a class="showSingle" target="Eng">English</a>
<a class="showSingle" target="Ger">Deutsch</a>
<a class="showSingle" target="Fre">Français</a>


<div id="divEng" class="targetDiv">
     <div id="text-top" class="english top">
         <p class="top">ENGLISH TEXT FOR TOP</p>
     </div>
     <div id="text-bot" class="english bot">
         <p class="bot">english text for bot</p>
     </div>
</div>

<div id="divGer" class="targetDiv">
     <div id="text-top" class="deutsch top">
         <p class="top">deutsch text for top</p>
     </div>
     <div id="text-bot" class="deutsch bot">
         <p class="bot">deutsch text for bot</p>
     </div>
</div>


<div id="divFre" class="targetDiv">
     <div id="text-top" class="francais top">
         <p class="top">francais text for top</p>
     </div>
     <div id="text-bot" class="francais bot">
         <p class="bot">francais text for bot</p>
     </div>
</div>

JS:

jQuery(function(){
    jQuery('.showSingle').click(function(){
          jQuery('.targetDiv').hide();
          jQuery('#div'+$(this).attr('target')).show();
    });
});

jsfiddle 在这里:

请告诉我是否有清理代码的地方,同时还设置 'divEng' 在页面加载时默认显示。

这是您隐藏和显示语言的开始。您只需要对其应用所需的 CSS。

$('a').click(function() {
  var lang = "." + $(this).attr('data-lang');
  $('.language').hide();
  $(lang).show(); 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div id="text-top-en" class="english language">
<p class="top">text above buttons english</p>
</div>
<a href="#" data-lang="english">English</a>
<div id="text-bot-en" class="english language">
<p class="bot">text below buttons english</p>
</div>

<div id="text-top-de" class="deutsch language" style="display: none;">
<p class="top">text above buttons in deutsch</p>
</div>
<a href="#" data-lang="deutsch">Deutsch</a>
<div id="text-bot-de" class="deutsch language" style="display: none;">
<p class="bot">text below buttons in deutsch</p>
</div>

<div id="text-top-de" class="french language" style="display: none;">
<p class="top">text above buttons in Français</p>
</div>
<a href="#" data-lang="french">Français</a>
<div id="text-bot-de" class="french language" style="display: none;">
<p class="bot">text below buttons in Français</p>
</div>

<div id="text-top-de" class="italian language" style="display: none;">
<p class="top">text above buttons in Italian</p>
</div>
<a href="#" data-lang="italian">Italiano</a>
<div id="text-bot-de" class="italian language" style="display: none;">
<p class="bot">text below buttons in Italian</p>
</div>

<div id="text-top-de" class="spanish language" style="display: none;">
<p class="top">text above buttons in spanish</p>
</div>
<a href="#" data-lang="spanish">Español</a>
<div id="text-bot-de" class="spanish language" style="display: none;">
<p class="bot">text below buttons in spanish</p>
</div>


<div id="text-top-de" class="dutch language" style="display: none;">
<p class="top">text above buttons in dutch</p>
</div>
<a href="#" data-lang="dutch">Nederlands</a>
<div id="text-bot-de" class="dutch language" style="display: none;">
<p class="bot">text below buttons in dutch</p>
</div>

向元素添加更多 类,以便更容易定位。
然后将语言添加到没有特殊字符的锚点。

在点击处理程序中,很容易获取语言,隐藏所有然后显示所选

$('.lang_selection').on('click', function() {
 $('.lang').hide();
    $('.' + $(this).data('lang')).show();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="text-top-en" class="english lang">
<p class="top">text above buttons</p>
</div>

<div id="text-bot-en" class="english lang">
<p class="bot">text below buttons</p>
</div>

<div id="text-top-de" class="deutsch lang" style="display: none;">
<p class="top">text above buttons in deutsch</p>
</div>

<div id="text-bot-de" class="deutsch lang" style="display: none;">
<p class="bot">text below buttons in deutsch</p>
</div>

<div id="text-top-de" class="francais lang" style="display: none;">
<p class="top">text above buttons in french</p>
</div>

<div id="text-bot-de" class="francais lang" style="display: none;">
<p class="bot">text below buttons in french</p>
</div>

<a href="#" class="lang_selection" data-lang="english">English</a>
<a href="#" class="lang_selection" data-lang="deutsch">Deutsch</a>
<a href="#" class="lang_selection" data-lang="francais">Français</a>

以下是我的做法:https://jsfiddle.net/phfva4hk/1/

<a href="#" data-language="english" class="the_language_selector">English</a>
<a href="#" data-language="deutsch" class="the_language_selector">Deutsch</a>
<br /><br />
<div id="text-top-en" class="english lang_based">
<p class="top">text above buttons</p>
</div>

<div id="text-bot-en" class="english lang_based">
<p class="bot">text below buttons</p>
</div>

<div id="text-top-de" class="deutsch lang_based" style="display: none;">
<p class="top">text above buttons in deutsch</p>
</div>

<div id="text-bot-de" class="deutsch lang_based" style="display: none;">
<p class="bot">text below buttons in deutsch</p>
</div>

在 JS 方面:

$(".the_language_selector").click(
    function () {
    var the_language_class = $(this).attr("data-language");
    $(".lang_based").hide("slow");
    $("." + the_language_class).show("slow");
  }
);

想法是使用 "data" 标签来存储要显示和隐藏的 div class。为了清除之前的选择,在每种语言 link 单击时,我还隐藏了所有具有 class "lang_based" 的 div(也就是说,根据语言显示或隐藏)

我希望这对你有用

<script src="http://code.jquery.com/jquery-latest.min.js"
        type="text/javascript"></script>

<div id="languages">
<div id="text-top-en" class="english">
<p class="top">text above buttons</p>
</div>

<div id="text-bot-en" class="english">
<p class="bot">text below buttons</p>
</div>

<div id="text-top-de" class="deutsch" style="display: none;">
<p class="top">text above buttons in deutsch</p>
</div>

<div id="text-bot-de" class="deutsch" style="display: none;">
<p class="bot">text below buttons in deutsch</p>
</div>
</div>

<a href="#">English</a>
<a href="#">Deutsch</a>
<a href="#">Français</a>
<a href="#">Italiano</a>
<a href="#">Español</a>
<a href="#">Nederlands</a>

js脚本端

  <script>
    $(function(){
      $('a').on('click',function() {
        var lang =$(this).text();
        $('#languages').children('div').each(function(){
          if($(this).is('.'+lang) ) {
            $(this).show();
          } else {
            $(this).hide();
          }
        });
      });
    });
  </script>

您可以简单地使用来自 jquery 的点击事件:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>Test</title>
    </head>
    <body>
      <a id="en" href="#">English</a>
      <a id="de" href="#">Deutsch</a>
      <a href="#">Français</a>
      <a href="#">Italiano</a>
      <a href="#">Español</a>
      <a href="#">Nederlands</a>
      <div id="text-top-en" class="english">
        <p class="top">text above buttons</p>
      </div>

      <div id="text-bot-en" class="english">
        <p class="bot">text below buttons</p>
      </div>

      <div id="text-top-de" class="deutsch" style="display: none;">
        <p class="top">text above buttons in deutsch</p>
      </div>

      <div id="text-bot-de" class="deutsch" style="display: none;">
        <p class="bot">text below buttons in deutsch</p>
      </div>
      <script src="jquery.js"></script>
      <script>
        //Event handler on deutsch click
        $("#de").click(function(){
          $(".english").hide();    
          $(".deutsch").show();
        });
        $("#en").click(function(){
          $(".english").show();    
          $(".deutsch").hide();
        });
      </script>
    </body>
</html>