2013-10-26 32 views
0

下面的代码检查是否存在cookie,如果没有找到cookie,则设置它们。然后,用户可以触发点击事件以存储新的cookie。此代码正用于在我自己的Google翻译功能中切换语言。保存Cookie值但不能在重新加载后运行

使用下面显示的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>"); 

      });    
    });  

回答

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: "/" }); 

一件事,你应该因为你动态创建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(); 
     }); 
+0

感谢这@Khanh TO,你可以看到任何理由,location.reload不会在这种情况下工作,我纠正了错误,它不工作。你的答案中的第一行是什么意思 - 意思是“重写?” –

+0

@Rob Myrick:我的意思是你将“language_name”设置为一个清空它的空值。 –

+0

谢谢。是的,我纠正了这一点,但仍然无法正常工作。 Cookie实际上保存了值,但不知何故,这不适用于谷歌翻译 –

0

如果您不需要服务器逻辑来本地化您的数据,那么您可以设置JavaScript值和Cookie吗?这post是类似的。

相关问题