3

HTMLのチャンクをドキュメントに動的に追加した後(例ではjQueryを使用していますが、質問はすべてのJavaScriptに有効です)、追加された要素はすぐに使用可能であると想定できますか?

$('#content').append('<p>Content</p><button id="newbutton">New</button><p>Some more content</p>');
var forExample = $('#newbutton').width(); // Element available?

私の特定のケースでは、単一の要素を作成することは実用的ではありません。また、これは昔のthe document.ready出来事です。

4

2 に答える 2

3

はい、すぐに利用できます。たとえば、jQueryは正しいオブジェクトを返し、要素をそれらにバインドできます。

ただし、スクリプトの実行中はレンダリングされないため、サイズの計算がすぐに行われるとは限りません。したがって、オブジェクトのサイズが必要な場合は、実行する必要があります。

setTimeout(function(){
    var forExample = $('#newbutton').width();
    // use size
}, 0); // 0 is enough to tell the engine to render before it executes the callback

インクリメンタルデバッグを行っている場合(スクリプトは実際には「実行中」ではない)、ブラウザの動作が異なることに注意してください。

于 2012-11-16T09:57:05.900 に答える
0

はい、直接入手できます。あなたはフィドルで1分でそれをテストすることができたでしょう... http://jsfiddle.net/adxbH/

var newButton = document.createElement('button');

newButton.id = 'newbutton';
newButton.innerHTML = 'button_test';
document.body.appendChild(newButton);
var forExample = document.getElementById('newbutton');
alert(forExample.offsetWidth);​

ご覧のとおり、jQueryを使用しなくても非常に簡単です。

于 2012-11-16T10:03:59.310 に答える