1

バックボーンのレンダリング機能では、

render: function() {
    this.$el.html('<div id="customID"></div>

    console.log($('#customID')[0]);
    setTimeout(function(){
        console.log($('#customID')[0]);
    }, 1);
}

最初の console.log は「未定義」を返します...

2 つ目は DOM ノードを返します。

レンダリング機能で DOM をタイムアウトなしで使用できないのはなぜですか?

4

1 に答える 1

3

これは、要素がまだドキュメントに追加されていないためです。DOM は使用できますが、要素はそこにありません。

このsetTimeout呼び出しにより、ブラウザーがコードの実行で忙しくなくなったときにコードが呼び出されます。これは、レンダリングが完了し、要素がドキュメントに追加されたときに発生します。

jQuery 呼び出しで要素をスコープとして使用すると、ドキュメントになくても div が検出されます。

console.log($('#customID', this.$el)[0]);

また:

console.log(this.$el.find('#customID')[0]);
于 2013-11-15T02:07:21.733 に答える