1

私は jQuery 言語スイッチャーを使用しています。以下は作業スクリプトです。

<script type="text/javascript">
    window.lang = new jquery_lang_js();
    $(document).ready(function() {  
        window.lang.run();
    });
</script>

<a href="javascript:window.lang.change('jp');">Switch to Japanese</a>

ただし、インライン JavaScript は、ページ内の他の jQuery スクリプトとの競合を引き起こしています。

以下のような関数を作成しようとしましたが、明らかに、これは正しくありません。.click 関数をドキュメント内に移動することで、提案どおりに準備が整いました。

<script type="text/javascript">
window.lang = new jquery_lang_js();
$(document).ready(function() {  
    window.lang.run();
});
$(".jp").click(function (e) {
    e.preventDefault();      
    var $this = $(this);        
    var id = $this.attr('href');
    window.lang.change('jp');
});

</script>

<a href="#" class="jp">Switch to Japanese</a>

その上、私は「jp」以外のクラスを持っているので、これは正しいアプローチではありませんが、最初にインラインJavaScriptを取り除こうとしていました; とにかく失敗しました。

誰でも助けてもらえますか?

//////////////////////以下が動作するようになりました//////////////////

私の質問は、このようなコードを繰り返さないようにどのように書き直すことができるでしょうか?

<script type="text/javascript">
window.lang = new jquery_lang_js();
$().ready(function () {
    window.lang.run();
 $(".jp").click(function (e) {
 e.preventDefault();      
        var $this = $(this);        
    var id = $this.attr('href');
    window.lang.change('jp');


 $(".en").click(function (e) {
 e.preventDefault();      
        var $this = $(this);        
    var id = $this.attr('href');
    window.lang.change('en');


});


});


</script>

<a href="#" class="jp">Switch to Japanese</a>
<a href="#" class="en">Switch to English</a>

. . . より多くのクラス

このように書くよりも良い方法がありますよね?

4

1 に答える 1

2

.click()の内部を移動する必要があり.ready()ます。現在、その JavaScript はアンカーが読み込まれる前に実行されているため、$('.jp')はそれを見つけられません。

$thisまた、変数として使用しないでください。これは PHP ではなく、とにかく重要なことには使用していません。

于 2013-04-11T17:16:45.603 に答える