当选择框中的语言被更改时,jQuery调用函数

时间:2012-07-18 15:15:18

标签: javascript jquery jquery-plugins

我有以下问题。 要翻译网站,我正在使用jQuery Localize插件。 这很好用。但是,我想要一个带有标志和语言的CSS样式选择框,当选择了不同的选项时,应该调用$("[data-localize]").localize("example", { language: $(this).attr('value')来翻译页面。

我正在使用的这段代码,它适用于普通的非风格选择框。

<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 个答案:

答案 0 :(得分:1)

此插件(source code)不遵循guidelines for jQuery plugin design。我发现的错误很快:

  • 它不允许链接,因为它不会返回this
  • 一次仅适用于一个元素(不使用each()

  • 它有一个奇怪的元素层次结构。它似乎需要一个带有id的元素,其中包含form,其中包含select(如demo中所示)。在我看来,应该仅在语言选择元素上调用这样的插件。

  • 它似乎自动导航,希望配置页面结构。该花式框中的每个li项都包含指向相应页面的链接。
  • 因此,它既不会触发它所居住的表格,也不会触发您想要收听的change事件。

就目前而言,您无法根据需要使用此特定插件。如果你想修复所有错误,我希望你有一个快乐的时光:-)尽管如此,可能来操纵插件代码,让你在select事件上注册回调(你可以在那里调用本地化插件)。否则,您需要选择其他选择插件(或者自己从头开始构建一个,调整现有代码)