2

jQueryのaddClass関数を使用して2pxの境界線を持つクラスを追加すると、iframeでcssを出力するときに新しい値ではなく古い値が返されることがあるようです。クラスが追加される速度が速いため、これは時々しか発生しないと思います。例えば:

スタイルシート:

.testBorder {
   border: 2px solid #000;
}

JavaScript:

var iframe = $('#contentFrame').contents();
var obj = $('#someObj',iframe);
obj.addClass('testBorder');
console.log(obj.css('border-top-width')); 
console.log(obj.css('border-left-width'));

出力される境界値は、多くの場合、2px ではなく 0 です。私は次のようなことができます:

obj.delay(500).queue(function(){
   console.log($(this).css('border-top-width')); 
   console.log($(this).css('border-left-width'));
   $(this).dequeue();
});

しかし、値を使用して正しく配置し、ジャンプしているように見えないように、クラスが追加された直後に適用しようとしています。

CSS が適用され、反映されているため、更新中であり、別のスタイルによってオーバーライドされていないことがわかります。

私が使用している jQuery のバージョンは 1.10.2 で、jQuery Migrate v1.2.1 を使用しており、jQuery UI を使用しています。

4

1 に答える 1

0

これを試して:

var iframe_content = ($.browser.msie ? $('#contentFrame').get(0).contentWindow.document) : $('#contentFrame').get(0).contentDocument));
var obj = iframe_content.find('#someObj');
obj.queue(function() { /** check for border width here **/ });
obj.addClass('testBorder').dequeue(); /* this last .dequeue() may not be necessary */
于 2013-07-15T18:01:20.967 に答える