2012-07-18 61 views
0

我遇到以下問題。 要翻譯一個網站,我使用的是jQuery Localize插件。 這工作正常。但是,我想要一個帶有標誌和語言的CSS樣式的選擇框,當選擇了不同的選項時,應該調用$("[data-localize]").localize("example", { language: $(this).attr('value')來翻譯頁面。選擇框中的語言改變時jQuery調用函數

我現在正在使用的這段代碼,它對於一個普通的非風格的selectbox可以正常工作。

<script type="text/javascript"> 
    $(function() { 
     $('#polyglot-language-options').change(function() { 
      if ($(this).attr('value') == "en") { 
       $("[data-localize]").localize("example", { 
        language: $(this).attr('value') 
       }); 
      } 
      else if ($(this).attr('value') == "nl") { 
       location.reload(); 
      } 
     }); 
    }); 
</script> 

但我想它的樣式,所以我試圖"polyglot" language switcher整合。但是,當前的代碼不起作用。如何集成$(「[data.localize]」)。localize();功能驗證碼:

$('#polyglotLanguageSwitcher').polyglotLanguageSwitcher({ 
    effect: 'fade' 
}); 
+1

*「當前代碼無法工作」* **什麼**完全不起作用? – 2012-07-18 15:17:31

+0

是的。如果沒有看到你的HTML,就很難診斷這個問題。我們需要查看您使用的具體元素的ID。 – Tim 2012-07-18 15:18:39

+0

多邊形插件替換正常的選擇框HTML代碼用其他的東西jQuery不認爲是一個選擇框,因此'change'不起作用。 – edwardmp 2012-07-18 15:19:08

回答

1

這個插件(source code)不跟隨guidelines for jQuery plugin design。這些安全漏洞,我發現快:

  • 它不允許鏈接,因爲它不返回this
  • 它僅適用於一個元素在同一時間(不使用each()

  • 它一個奇怪的元素層次結構。它似乎需要一個帶有ID的元素,其中包含一個form,其中包含一個select(如demo中所示)。在我看來,這種插件只能在語言選擇元素上調用。

  • 它似乎自動導航,想要配置頁面結構。該花式框中的每個li項目都包含指向相應頁面的鏈接。
  • 因此,它既不觸發它所居住的窗體,也不觸發你想要聽的change事件。

就目前來看,你不能使用這個特定的插件,只要你想。如果你想修復所有的錯誤,我祝你開心:-)儘管如此,可能是來操縱插件代碼,讓你在選擇事件(你可以調用本地化插件)註冊回調。否則,您將需要選擇另一個選擇插件(或者從頭開始構建一個,以適應現有代碼)

+0

感謝您的回覆。你知道任何其他插件,有一個很好的選擇框,我可以使用這個? – edwardmp 2012-07-18 17:11:52

+0

沒有具體的,但我相信jQuery UI包含工具來建立一個。 – Bergi 2012-07-18 17:16:48