10

スタックに関する最初の質問です。JS と lang プロパティを使用して、HTML で記述された要素の言語を変更する新しい方法を開発しようとしています (明らかに、これに対する解決策をオンラインで見たことがないため、おそらくそれは不可能です)。

基本的に、それぞれに lang プロパティを持つ複数のタグを作成したので、特定の lang に表示値 -none- を指定して非表示にし、値 -inherit- を指定して表示します。そのようにして、次の行を使用します。

a:lang(en),p:lang(en) { display : none }
a:lang(it),p:lang(it) { display : inherit }

一度に 1 つの言語を見ることができます。そして、それはうまくいきます!

今、私は作成しました

<a href="" lang="en" id="en"> word </a>

英語のテキストをタグで囲み、独自の lang プロパティを持つ他の言語でも同じです。私は使用しようとしました:

$("#en").click(function(){
           $('a:lang(en)').css('display', 'inherit');
           $('a:lang(it)').css('display', 'none');
           };

うまくいかないようです。

何か案は?

たくさんありがとう、シェイ

4

3 に答える 3

21

ページをロードすると、が付属し、<body class="it">すべての:lang(en)タグが非表示になります。

body.en :lang(it) {
  display: none;
}
body.it :lang(en) {
  display: none;
}

また、言語を変更する必要がある場合は、のを変更するだけclassNameです<body>

$("#en").click(function(){
  document.body.className = 'en';
};

これはよりエレガントで、はるかに高速です。

デモ: http: //jsfiddle.net/Gw4eQ/


:notセレクターを使用して、より多くの言語で機能するようにします。デモ

body:not(.en) :lang(en), 
body:not(.it) :lang(it), 
body:not(.fr) :lang(fr) { 
    display: none; 
}
于 2012-11-28T14:24:45.673 に答える
2

これは正しくありません:

$('a:lang(en)').attr('display', 'inherit');
$('a:lang(it)').attr('display', 'none');

属性「display」はありません。代わりに次を使用してください。

$('a:lang(en)').css('display', 'inherit');
$('a:lang(it)').css('display', 'none');

または単に:

$('a:lang(en)').show();
$('a:lang(it)').hide();

...しかし、関数を正しくラップしなかった場合にもエラーが発生します。

$("#en").click(function(){
    $('a:lang(en)').css('display', 'inherit');
    $('a:lang(it)').css('display', 'none');
}; // <---- error

する必要があります:});

$("#en").click(function(){
    $('a:lang(en)').css('display', 'inherit');
    $('a:lang(it)').css('display', 'none');
}); // <---- fixed

また、inlineではなく使用しますinherit。「継承」は「デフォルト」を意味するのではなく、「親からこのプロパティを継承する」ことを意味します。これはおそらく。になりますblock<a>のデフォルトの表示はinlineです。

于 2012-11-28T13:44:27.710 に答える
2

)で「クリック」を閉じますか?

$("#en").click(function(){
       $('a:lang(en)').css('display', 'inherit');
       $('a:lang(it)').css('display', 'none');
 });
于 2012-11-28T14:24:29.103 に答える