1

このような質問を何十億も読みましたが、まだ答えが見つかりません。

とにかく、私がタイプするとき

var variableContainingID = "header";
var div = $("#"+variableContainingID);

「未定義」を返します

しかし、私が入力すると

var variableContainingID = "header";
var div = $('[id^="'+variableContainingID+'"]');

それは正常に動作します。理由はありますか?

アップデート

var json = '{"divs":['
var children = $(".parent_container > div");
var idArray = [];
var numArray = [];
for (var x=0; x<children.length; x++) {
    var eleid = $(children[x]).attr("id");
    idArray.push('"'+eleid+'"');
    numArray.push(x+1);
}
var idString = idArray.join(",");
var numString = numArray.join(",");
json += idString;
json += '],"number":['+numString+']}';
var obj = JSON.parse(json);
for (x in obj["divs"]) {
    var div = $('[id^="'+obj["divs"][x]+'"]');
}

二重引用符がそれを捨てる可能性があると思いますか?

4

1 に答える 1

4

あなたの質問に書いたように:

var div = $("#"+variableContainingID);
var div = $('[id^="'+variableContainingID+'"]');

これらの 2 つの行は同一ではありません。最初のものは、idof で要素を選択しますheaderid2 つ目は、指定された文字列 ( ) で始まる値で指定された要素を選択しますheader

したがって、次のような要素がある場合:

<div id="headerHere"></div>

最初のもの ( $("#"+variableContainingID)) はそれを選択できませんが、2 番目のもの ( $('[id^="'+variableContainingID+'"]')) はその要素を選択できます。 これは^=、セレクターで使用したためです。jQuery API:セレクターで始まる属性 (name^="value")を参照してください。

attributejQuery のすべてのセレクターを見る価値があります。

于 2013-05-11T08:17:04.710 に答える