0

次の問題があります。ウェブサイトを翻訳するために、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>

でもスタイリングしたいので、「ポリグロット」言語スイッチャーを統合してみました。ただし、現在のコードは機能しません。

$("[data.localize]").localize(); をどのように統合できますか? このコードの関数:

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

1 に答える 1

1

このプラグイン (ソース コード) は、jQuery プラグイン設計のガイドラインに従っていません。すぐに見つけたバグ:

  • 戻らないため、チェーンを許可しませんthis
  • 一度に 1 つの要素に対してのみ機能します ( は使用しませんeach()) 。

  • 奇妙な要素階層があります。( demoformのように) を含む aを含むid を持つ要素が必要なようです。私の意見では、そのようなプラグインは言語選択要素でのみ呼び出す必要があります。select

  • ページ構造を設定したいので、自動的にナビゲートするようです。liファンシー ボックス内の各アイテムには、それぞれのページへのリンクが含まれています。
  • したがって、それが存在するフォームをトリガーしたり、changeリッスンしたいイベントを発生させたりすることはありません。

現状では、この特定のプラグインを思い通りに使用することはできません。すべてのバグを修正したい場合は、幸せな時間を過ごしてください :-) それでも、プラグイン コードを操作して、選択したイベント (ローカリゼーション プラグインを呼び出すことができる場所) にコールバックを登録できるようにすることは可能かもしれません。それ以外の場合は、別の選択プラグインを選択する必要があります (または、既存のコードを調整して、自分でゼロから構築します)。

于 2012-07-18T16:22:42.990 に答える