0

以下のような ID を持つ div があります。

<div id="text.header" class="countDiv"></div>
<div id="text.content" class="countDiv"></div> etc

私は2つの配列を持っています。最初に、array1 = [1,2] を使用し、次のスニペットを使用してすべての div の ID を保存します。

$(".countDiv").each(function(i){
    array2[i] = $(this).attr("id");
}

次に、次を使用して、の値をdiv の id に.html()書き込みます。i

for(var myCount = 0; myCount < array1.length; myCount++){
    $("#" + array2[i]).html(array1[i]);
}

問題は、すべての場合で問題ないことですが.、ID 間で使用すると、コードが機能しません。コンソールにエラーは表示されません。

例: を使用するとうまく動作しますが、 を使用するとページが空白になります。コードが機能しません。

ここで何か間違ったことをしていますか?どんな助けでも大歓迎です。

4

4 に答える 4

2

結果のセレクター文字列がどのように見えるかを見ると、この行が引き起こす問題がわかります。

$("#"+array2[i])

id が であるとしましょうtext.header。結果のセレクター文字列がどうなるかを見てください。

$('#text.header')

textこのセレクターは、idとクラスがの要素に一致しheaderます。それはあなたが望むものではありません。jQuery の解決策はドットをエスケープすることですが、より良い方法は、ネイティブ DOM メソッドを使用して jQuery オブジェクトでラップすることです。

$(document.getElementById(array2[i]))

重複した質問にこのアプローチがリストされていなかったので、ここに投稿することもできます。

于 2013-06-06T05:21:16.393 に答える
1

あなたはそれを言及myCountしましたが、使用しませんでした。.また、使用中にjqueryが問題を引き起こすため、ここで id使用しますjavascriptselecting id

var array2=new Array();
var array1 = [1,2];
$(".countDiv").each(function(){
   array2.push($(this).attr("id"));
});

for(i=0; i<array1.length; i++){
    document.getElementById(array2[i]).innerHTML=(array1[i]);
}

フィドル http://jsfiddle.net/gEScc/1/

于 2013-06-06T05:25:07.883 に答える
0

.、jQuery (および CSS) のクラス セレクターを表します。にエスケープすることを検討してください\.

$("#" + array2[i].replace(".", "\\."))...
于 2013-06-06T05:17:06.497 に答える
-1

。はい。

「.」は CSS のクラス パス セパレータであるため、明らかにクラス名には使用できません。

それは設計によるものです(CSS)。

于 2013-06-06T05:16:27.137 に答える