0

以下のコードは、Cookie が存在するかどうかを確認し、見つからない場合は設定します。その後、ユーザーはクリック イベントをトリガーして、新しい Cookie を保存できます。このコードは、独自のカスタム Google 翻訳機能で言語を切り替えるために使用されています。

以下に示すように使用location.reload();すると、Cookie の値は適切に読み込まれますが、言語は変更されません。を使用せずにこれを再コーディングすると、言語は変わりlocation.reload()ます。ただし、ページを再ロードしたいと思います。

私がここに欠けているものはありますか?

<script>
     jQuery( document ).ready(function($) {

     //Click event functionality for drop-down and flag language display
        $("a.nturl").click(function() { 
            $.cookie("language_name", $(this).attr("title"),{ path: "/" });
            $.cookie("flag_url", $(this).find("img").attr("src"),{ path: "/" });
          location.reload();
        });

        $("a.flag").click(function() {           
            $.cookie("language_name", $(this).attr("title"),{ path: "/" });
            $.cookie("flag_url", $(this).find("img").attr("src"),{ path: "/" });
          location.reload();
        });

     $(function() { 
       var language_name = $.cookie("language_name"); 
       var flag_url = $.cookie("flag_url");

                 if(typeof(language_name) == "undefined" || typeof language_name == "object") {
                   //alert("hello");
                  $.cookie("language_name","English");
                  var language_name = $.cookie("language_name");
               }

               if(typeof(flag_url) == "undefined" || typeof flag_url == "object") {

                  $.cookie("flag_url","<?php echo plugins_url(); ?>/google-language-translator/images/flags24/unitedstates.png");
                  var flag_url = $.cookie("flag_url");
               }

       $("div.selected").html( "<a class=\"notranslate nturl\" onclick=\"return false;\" href=\"#\"><span class=\"flag\"><img class=\"flagimg flagselect\" src=\"" + flag_url + "\" alt=\"" + language_name + "\" height=\"16\" width=\"16\"></span>" + language_name + "</a>");

       $.removeCookie("language_name");
       $.removeCookie("flag_url");

     });

       $(function() { 
               var language_name = $.cookie("language_name");
               var flag_url = $.cookie("flag_url");
               var language_name = $.cookie('language_name');
                  if (language_name == "English") {
                      $('.en').css('display','none'); 
                      $('.selected').click(function() { $('.en').css('display','none');  }); 
                  } 

                  if (language_name == "Spanish") {
                  //alert(language_name);
                      $('.selected').click(function() { $('.es').css('display','none'); }); 
                  }

               $("div.selected").html( "<a class=\"notranslate nturl\" onclick=\"return false;\" href=\"#\"><span class=\"flag\"><img class=\"flagimg flagselect\" src=\"" + flag_url + "\" alt=\"" + language_name + "\" height=\"16\" width=\"16\"></span>" + language_name + "</a>");

            });             
  });    

4

2 に答える 2

0

あなたの言語はこの行で上書きされます:

$.cookie("language_name", $(this).attr("title"),{ path: "/" });

このtitleコードが示すように、属性は空です。

$("div.selected").html( "<a class=\"notranslate nturl\" onclick=\"return false;\" href=\"#\"><span class=\"flag\"><img class=\"flagimg flagselect\" src=\"" + flag_url + "\" alt=\"" + language_name + "\" height=\"16\" width=\"16\"></span>" + language_name + "</a>");

属性<a> がないことに注意してくださいtitle

<a class=\"notranslate nturl\" onclick=\"return false;\" href=\"#\">

私はあなたがこれを望んでいると思います:

$.cookie("language_name", $(this).find("img").attr("title"),{ path: "/" });

もう 1 つ、DOM を動的に作成しているため、委任されたイベント ハンドラーを使用する必要があります。

$(document).on("click","a.nturl",function() { 
            $.cookie("language_name", $(this).find("img").attr("title"),{ path: "/" });
            $.cookie("flag_url", $(this).find("img").attr("src"),{ path: "/" });
          location.reload();
        });

        $(document).on("click","a.flag",function() {           
            $.cookie("language_name", $(this).find("img").attr("title"),{ path: "/" });
            $.cookie("flag_url", $(this).find("img").attr("src"),{ path: "/" });
          location.reload();
        });
于 2013-10-26T02:40:49.353 に答える
0

データをローカライズするためのサーバー ロジックが必要ない場合は、JavaScript の値と Cookie を設定できますか? この投稿も同様です。

于 2013-10-26T02:44:55.847 に答える