我無法讓一些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