1

関数に渡されているHTMLElementオブジェクトのペアがあります。1つはコンテナdivで、もう1つはコンテナに追加されます。これは期待どおりに機能しています。後で子要素を見つけるために、このタイプの要素に固有のクラスを指定します(複数存在する場合があります)。これも期待どおりに機能しています。ただし、後で子要素を操作しようとすると、jQuery .find( "。myClass")は結果を返しません。次のコードは、chromeとie8 / 9では1を返しますが、ie7では0を返します。

$(document).ready(function(){
    var insert = document.createElement("div");
    insert.setAttribute("class","insertedElement");
    insert.appendChild(document.createTextNode("Some Text"));
    $(document.getElementById("container")).append(insert);
    alert($("#container").find(".insertedElement").length);
});

これはJSFiddleにあります:http://jsfiddle.net/tYfqk/

ここで何が起こっているのか、またはどうすれば修正できますか?

また、不自然な$( "document.getElementById(" container "))。append(insert);を失礼します。これは、私のオブジェクトがjQueryオブジェクトではなくDOM要素として入ってくることを示すためだけのものです。$("を知っています。 #container ")。append(insert);はそこでより意味がありますが、変更しても問題はまだ存在します。

4

3 に答える 3

2

古いバージョンのIEでは、「クラス」を属性として設定してクラスを設定することはできません。代わりにjQuery「addClass」を使用してください。

$(insert).addClass("insertedElement");

または、「className」プロパティを設定するだけです。

insert.className = "insertedElement";

(「クラス」という単語はJavaScriptで予約されているため、プロパティは「className」です。)一般に、「className」、「id」、「name」、「value」、「type」、「href」など。 DOM要素では、属性ではなくオブジェクトプロパティとして扱うことができます(私はそう思います)。

于 2012-09-18T16:10:17.723 に答える
0

また、jQuery 1.8はすでにそれを修正しています;)

于 2012-09-18T16:24:30.823 に答える
0

このコードをチェックしてください、私はそれがIE7で動作するはずだと思います

$(document).ready(function(){

    var insert = $('<div></div>').addClass('insertedElement').text("Some Text");

    insert.appendTo($("#container"));

    alert($("#container").find(".insertedElement").length);


});
于 2012-09-18T16:16:07.847 に答える