我有div
<div id="rotatingText" class="marquee">
</div>
并在窗口加载
上初始化该divjQuery('.marquee').marquee({
duration: 3000,
gap: 50,
delayBeforeStart: 0,
direction: 'left',
duplicated: false
});
现在我需要在ajax aftersuccess上更改该div的文本和css。我在ajax响应中获得了新的text和css属性。使用该文本和css,我将调用以下内容:
function setRotatingTextProperties( value, css, objectId )
{
var object = document.getElementById( objectId );
object.innerHTML = value;
jQuery ( object ).attr( 'style', css );
}
在那个选框停止工作之后。 我认为jQuery选框在该div中设置了一些样式,我用它覆盖它:
jQuery ( object ).attr( 'style', css );
如果我只是将我的CSS添加到现有的
var currentCss = jQuery ( object ).attr( 'style');
jQuery ( object ).attr( 'style', currentCss + css );
多次更改我将最终得到大量无法使用的CSS。那个css会定期更改(每隔几秒钟)...... 任何建议和想法将不胜感激。 Thx提前。
答案 0 :(得分:1)
实际上我认为你的问题不在你的CSS中:
jQuery ( object ).attr( 'style', css );
根据我的经验,jQuery marquee的问题在于更改文本。所以你的问题是:
object.innerHTML = value;
最佳解决方案(如果您可以更改该页面的HTML )是为其添加跨度:
<div id="rotatingText" class="marquee">
<span id="rotatingTextSpan"></span>
</div>
并更改跨文本和div的样式。类似的东西:
function setRotatingTextProperties( value, css )
{
// change span text value
$( '#predefineImageRotatingTextSpan' ).text( value );
// change css value on div
$( '#predefineImageRotatingText' ).attr( 'style', css );
}
如果您因任何原因无法更改该网页的HTML ,您可以随时在window.load或document.ready上插入span值,但 BEFORE 你用
之类的东西初始化字幕 $( '#predefineImageRotatingTextSpan' ).html( '<span id="predefineImageRotatingTextSpan"></span>' );
然后使用上面的功能。
修改强>
如果您在div中有一些预定义文本,请将其值复制到该div:
var $object = $( '#predefineImageRotatingTextSpan' )
var initialText = $object.text()
$object.html( '<span id="predefineImageRotatingTextSpan"> ' + initialText + '</span>' );