2016-05-23 7 views
0

jQueryを使用してdivに要素を追加すると、すべて正常に動作します。Jquery、動的に生成された要素のCSSプロパティにアクセスできません

var new_div = $('<div>My stuff</div>'); 
new_div.appendTo("#container"); 

しかし、私はdivが突然代わりにフェードインするようにしたいと思います。

動的生成要素のグラフィックプロパティにアクセスしようとするとエラーが表示されますが、だから、これは、例えば失敗:

new_div.hide().fadeIn(); 

コンソールは、次のエラーが報告されます

TypeError: jQuery.curCSS is not a function 

は、私は現在のCSSプロパティを動的に生成された要素のために定義されていないため、これは失敗したことを、これを正しく理解していますか?それ以外に何がうまくいかないのでしょうか?

重要編集 これに関する追加の確認と作業は、私の部分からの完全な誤解を指摘しました。これは要素が動的に生成されたという事実とは関係がありません。私はfadeIn()を何らかの要素で呼び出すことによって同じことを得ました。 心からお詫び申し上げます。 しかし、なぜこれが起こったのですか?

+0

.hideの後に括弧を忘れてしまいました。 'new_div.hide()。fadeIn();'は動作するはずです。 TypeErrorは他のものに属しているようですか? –

+1

jquery 1.8.0 curCSSメソッドがjqueryコアから削除されているためです。代わりにcss()を使用してください。 – Kruser

+0

@ Mois44、ops、申し訳ありませんが、答えを書いています。それは私の元のコードで正しいので、それはそれではありません – DavidTonarini

答えて

0

私は正確にそれを修正する理由と方法を理解することはできませんでしたが、互換性の問題と思われます。 このコードを追加すると、問題は解決します。

jQuery.curCSS = function(element, prop, val) { 
    return jQuery(element).css(prop, val); 
}; 
0

DOMに要素を追加するには時間がかかりますが、それはjQueryが要素を見つけることができないためです。
DOMが大規模なhtmlページの場合、このプロセスはさらに遅くなる可能性があります。

は、このようにコードを書く:それはjQueryの要素をキャッチするのに十分な時間であるかもしれない

var new_div = $('<div>My stuff</div>'); 
new_div.appendTo("#container"); 
setTimeout(function(){ 

    new_div.hide().fadeIn(); 

} , 150); // 100 could be also good 

+0

FYI:新しい要素を追加する前に操作することもできます別の要素。これは最初の行に作成され、変数 "new_div"によって参照されます。これは非同期とは関係ありません(appendToのようなDOM操作も非同期ではありません)。 –

0

私が作成しているすべての要素を追跡するIDを追加します(私の好みですが、コードを簡単にすることができます)。

var new_div = '<div id="myNewDiv1" style="display:none;">My Styff</div>' 
$('body').append(new_div); 
$('#myNewDiv1').fadeIn(); 
関連する問題