2

次のコードでは、どのようthebodyにしてapp.body両方をJQueryオブジェクトにすることができますが、.cssプロパティをに設定しても機能しますthebodyが、機能しませんapp.bodyか?

var app = app || {};

app.show = function(html) {
    this.baseElement.html(html);
};

app.body = $('body');

app.init = function() {
    this.baseElement = $('div#app');
    var thebody = $('body');
    console.log(app.objectIsJquery(thebody)); //true
    console.log(app.objectIsJquery(app.body)); //true
    app.body.css('background-color', 'yellow'); //does not set the background color, no errors
    //thebody.css('background-color', 'yellow'); //sets color correctly
};

app.start = function() {
    this.baseElement.css('color', 'brown');
    this.show(dp.qstr.addStar('testing'));
};


app.objectIsJquery = function(obj) {
    return obj.selector != undefined;
}
4

2 に答える 2

6

そのコードは、ページのヘッドセクションにある可能性があります。したがって、行app.body = $('body');が実行されたとき、本体はまだ存在していません。しかし、app.init()後で電話します。おそらくDOMReadyにあるので、その時点で本体が存在します。実行var thebody = $('body');すると、コレクションに1つの要素が含まれます。

app.body.length === 0whileをチェックすることで、これを確認できますthebody.length === 1

コードのブロック全体を本文に移動するか、次のDOMReadyようなコールバックに移動する必要があります。

$(function(){

...

});
于 2012-06-07T18:07:33.620 に答える
0

試す

app.body.html().css()

私の勘が正しければ、jqueryはapp.bodyのdomを選択していないため、選択するにはhtmlに変換する必要があります。

于 2012-06-07T18:06:58.497 に答える