我无法让一些jquery代码工作。我认为我的问题在于我如何编写选择器。prevAll的jQuery Selector问题
这是我原来的HTML:
<div class="rotate">
<div class="offer-holder"><span class="lblSeconds">7</span></div>
<div class="offer-holder"><span class="lblSeconds">3</span></div></div>
...这是我的jQuery代码:
$("div.rotate div.offer-holder").hide().eq(1).show();
function rotate() {
var i = $("div.rotate div.offer-holder:visible").prevAll("div").length + 1;
i = i % $("div.rotate div.offer-holder").length;
var speed = $("div.rotate div.offer-holder").fadeOut().eq(i).fadeIn().find('.lblSeconds').text();
setTimeout("rotate()", (parseInt(speed) * 1000));
};
rotate();
这工作完全(顺便说一句,在CSS,提供持有者的位置设置绝对,顶部:0px,左:0px)。顺便说一句,这是一个广告轮换。所有的div都相互重叠,然后逐一出现,不断循环。现在
,我要修改它的另一个页面,这看起来是这样的:
<div class="rotate">
<div class="ob-offer-item rounded-corners clearfix">
<div class="test">
<div class="ob-offer-details">
<div class="offer-holder"> XXX </div></div></div></div></div>
...这里是我的尝试:
$("div.rotate div.ob-offer-item div.test div.ob-offer-details div.offer-holder").hide().eq(1).show();
function rotate() {
var i = $("div.rotate div.ob-offer-item div.test d div.ob-offer-details div.offer-holder:visible").prevAll("div").length + 1;
i = i % $("div.rotate div.ob-offer-item div.test d div.ob-offer-details div.offer-holder").length;
var speed = $("div.rotate div.ob-offer-item div.test d div.ob-offer-details div.offer-holder").fadeOut().eq(i).fadeIn().find('.lblSeconds').text();
setTimeout("rotate()", (parseInt(speed) * 1000));
};
rotate();
我怀疑我的问题是prevAll。它基本上隐藏了每一个div(我猜这就是我要说的)。基于lblSeconds值,不是从一个广告到下一个广告逐渐淡出,而是每秒都会持续闪烁。我不知道修正prevAll选择器路径的正确语法。我尝试了几种组合,无济于事。
任何援助是值得欢迎的。
谢谢。
斯蒂芬
请包括您的CSS。 – 2011-04-01 15:24:58
这个问题并不是真的需要CSS,但我认为使用的选择器确实很难阅读。 – kasdega 2011-07-15 15:53:51
您不需要在选择器中包含HTML的每一层。您只需要包含足够的内容,以确保类的冲突不会在选择器中造成歧义。 – kasdega 2011-07-15 15:54:01