0

本当にjavascriptに入り、いくつかのパターンを見回しています。私が出くわしたのはモジュールパターンです。それは機能のチャックを考える良い方法のように思われるので、私は先に進んでそれをjQueryで実装しようとしました。しかし、私は引っ掛かりに出くわしました。次のコードを検討してください

    <!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-type" content="text/html; charset=utf-8">
        <title>index</title>        
        <script type="text/javascript" charset="utf-8" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
        <script type="text/javascript" charset="utf-8">
            $(document).ready(function(){

                var TestClass2 = (function(){
                    var someDiv;            
                    return {
                        thisTest: function ()
                        {
                               someDiv = document.createElement("div");
                                   $(someDiv).append("#index");
                                   $(someDiv).html("hello");
                                   $(someDiv).addClass("test_class");
                        }
                    }
                })();

                TestClass2.thisTest();          

            });
        </script>

    </head>

    <body id="index" onload="">

        <div id="name">
            this is content
        </div>

    </body>
</html>

上記のコードは、divのhtmlコンテンツにアラートを送信してから、クラスを追加します。これらは両方ともjQueryメソッドを使用します。問題は、.html()メソッドが正常に機能することですが、クラスを追加できません。エラーは発生せず、クラスは追加されません。ここで何が起きてるの?クラスがdivに追加されないのはなぜですか?

4

3 に答える 3

2

ああ、あなたがあなたの質問を更新したので、私はあなたの質問にもっとよく答えることができます。新しく作成された要素を既存の#index内に移動することを考慮して、appendをappendToに変更する必要があります。

$(document).ready(function() {

var TestClass2 = (function() {
    var someDiv = $("#name");
    return {
        thisTest: function() {
            someDiv = document.createElement("div");
            $(someDiv)
                .html("hello")
                .addClass("test_class")
                .appendTo("#index");
        }
    }
})();

TestClass2.thisTest();

});

お役に立てれば!

于 2011-01-17T00:52:10.147 に答える
0

あなたのコードはうまくいきます! http://jsfiddle.net/lmcculley/p3fDX/

于 2011-01-16T23:55:22.100 に答える
0

私はあなたのコードをコピーして貼り付けました、そしてそれは私のために働きます。

ソースを表示してクラスが適用されているかどうかを確認するだけではないことを確認してください。これは、サーバーから送信されたHTMLを表示するだけなので、JavaScriptを介して発生するDOMの更新は反映されません。

ライブDOMを表示するには、FirebugやWebKitのインスペクター(SafariとChromeに組み込まれています)などのツールを使用します。

于 2011-01-16T23:36:41.007 に答える