#jquery #slideshow #slide
#jquery #слайд-шоу #слайд
Вопрос:
Я динамически создавал обзоры внутри таблиц с классом ‘helpfulreviews’. Я хочу взять эти таблицы и, по сути, скрыть все, кроме одной из них, и автоматически перейти к следующей таблице через определенный промежуток времени, используя jQuery
Вот три обзора, я хочу, чтобы один отображался и переходил к другому примерно через 10 секунд, затем переходил к третьему обзору, затем возвращался к началу. Я упростил пример:
<table width="100%" border="1" cellspacing="0" cellpadding="0" class="helpfulreviews">
<tbody>
<tr>
<td>MY FIRST REVIEW GOES HERE<br>Terrible Product</td>
</tr>
</tbody>
</table>
<table width="100%" border="1" cellspacing="0" cellpadding="0" class="helpfulreviews">
<tbody>
<tr>
<td>MY SECOND REVIEW GOES HERE<br>Great Product you have here</td>
</tr>
</tbody>
</table>
<table width="100%" border="1" cellspacing="0" cellpadding="0" class="helpfulreviews">
<tbody>
<tr>
<td>MY THIRD REVIEW GOES HERE<br>This is an awesome product</td>
</tr>
</tbody>
</table>
Полный код одной из таблиц:
<table width="100%" border="0" cellspacing="0" cellpadding="0" class="helpfulreviews">
<tbody><tr>
<td width="1%">amp;nbsp;</td>
<td width="99%">
<table width="100%" border="0" cellspacing="0" cellpadding="0" class="colors_descriptionbox">
<tbody><tr>
<td width="1px" valign="top"><img src="/v/vspfiles/templates/90/images/RBox_Border_Left_Top.gif"></td>
<td width="100%" valign="top" background="/v/vspfiles/templates/90/images/DBox_Border_Top.gif"><img src="/v/vspfiles/templates/90/images/clear1x1.gif" width="1" height="1"></td>
<td width="1px" valign="top"><img src="/v/vspfiles/templates/90/images/DBox_Border_Right_Top.gif"></td>
</tr>
<tr>
<td width="1px" background="/v/vspfiles/templates/90/images/DBox_Border_Left.gif"><img src="/v/vspfiles/templates/90/images/clear1x1.gif" width="1" height="1"></td>
<td width="100%" valign="top">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tbody><tr>
<td><b><img src="/v/vspfiles/templates/90/images/star5.gif"><br>
Great Product</b> </td>
<td align="right"><i>April 28, 2011</i></td>
</tr>
<tr>
<td><i><span class="PageText_L510n">Reviewer</span>:
<span class="PageText_L512n">Anonymous Person</span>
</i><br><br></td>
<td align="right">amp;nbsp;</td>
</tr>
</tbody></table>
I used this product and it was great<br>
<br>
<span class="PageText_L514n"><span id="helpful"></span></span> <a href="/reviewhelpful.asp?ProductCode=TRU-GDM49amp;amp;ID=12amp;amp;yes=yes"><img src="/v/vspfiles/templates/90/images/buttons/btn_reviews_yes.gif" align="absmiddle" border="0"></a>
<a href="/reviewhelpful.asp?ProductCode=TRU-GDM49amp;amp;ID=12amp;amp;yes=no"><img src="/v/vspfiles/templates/90/images/buttons/btn_reviews_no.gif" align="absmiddle" border="0"></a>
</td>
<td width="1px" background="/v/vspfiles/templates/90/images/DBox_Border_Right.gif"><img src="/v/vspfiles/templates/90/images/clear1x1.gif" width="1" height="1"></td>
</tr><tr>
<td width="1px" valign="top"><img src="/v/vspfiles/templates/90/images/DBox_Border_Left_Bottom.gif"></td>
<td width="100%" valign="top" background="/v/vspfiles/templates/90/images/DBox_Border_Bottom.gif"><img src="/v/vspfiles/templates/90/images/clear1x1.gif" width="1" height="1"></td>
<td width="1px" valign="top"><img src="/v/vspfiles/templates/90/images/DBox_Border_Right_Bottom.gif"></td>
</tr>
</tbody></table>
</td>
</tr>
</tbody></table>
Комментарии:
1. Есть ли в вашем классе helpfulreviews что-нибудь важное? (Я возился с вашим кодом и хочу включить его, если это важно) Если да, можете ли вы опубликовать это, пожалуйста?
2. @Thomas-Shields Да, в моем классе helpfulreviews много чего есть внутри, я обновил приведенный выше код!
3. Кстати, отличный вопрос. Наконец-то получил свой ответ и многому научился при его создании. Спасибо!
Ответ №1:
Извините за задержку. Вот рабочий пример. Очевидно, что вы можете настроить размеры и прочее в соответствии с вашими целями. Идея состоит в том, чтобы обернуть таблицы в div контейнера с помощью overflow:hidden
и смещать их по мере необходимости (т.е. первая таблица расположена так, чтобы заполнить div, вторая имеет margin-left
ширину, равную контейнеру, левое поле третьей в два раза больше ширины и т.д.)
<style type="text/css">
.helpfulreviews
{
width:100%;
height:100%;
position:absolute;
}
</style>
<div style="width:400px; height:50px; overflow:hidden; position:relative;" id="sliderContain">
<table width="100%" height="100%" border="1" cellspacing="0" cellpadding="0" class="helpfulreviews">
<tbody>
<tr>
<td>MY FIRST REVIEW GOES HERE<br>Terrible Product</td>
</tr>
</tbody></table>
<table width="100%" height="100%" border="1" cellspacing="0" cellpadding="0" class="helpfulreviews" >
<tbody>
<tr>
<td>MY SECOND REVIEW GOES HERE<br>Great Product you have here</td>
</tr>
</tbody></table>
<table width="100%" height="100%" border="1" cellspacing="0" cellpadding="0" class="helpfulreviews" > <tbody> <tr> <td>MY THIRD REVIEW GOES HERE<br>This is an awesome product</td> </tr> </tbody></table>
</div>
<script type="text/ecmascript">
$(document).ready(function () {
var w = 300; //set your width here
var h = 50; //set your height here
var d = 3000; //set your delay here
var n = $(".helpfulreviews").length;
if(n>1){
var t = window.setTimeout(slideTable, d);
$("#sliderContain").css("width", w "px");
$("#sliderContain").css("height", h "px");
var i = h;
$(".helpfulreviews").each(function (index) {
i = h * index;
$(this).css("top", i "px");
});
}
function slideTable() {
$(".helpfulreviews").each(function (index) {
if ($(this).css("top") == (1 - n) * h "px") { //checks if we need to cycle them around
$(this).css("top", h "px");
}
});
var a2l = "-=" h "px";
$(".helpfulreviews").animate({
top: a2l
}, 300, function () {
slideTable();
}).delay(d);
};
});
</script>
РЕДАКТИРОВАТЬ: Я изменил код, чтобы динамически изменять таблицы, значения и прочее на основе определения нескольких переменных; таким образом, вам не нужно проходить и изменять кучу значений каждый раз, когда вы меняете размер своих обзоров.
Комментарии:
1. ОЧЕНЬ ПРИЯТНО. Я пытаюсь заставить его правильно работать с тем, что у меня есть ЗДЕСЬ . Таблицы будут создаваться динамически, поэтому я не могу указать, сколько там будет таблиц. Вы увидите отзывы с правой стороны.
2. О, если подумать, вам не нужно указывать количество таблиц… пока у них есть
.helpfulreviews
класс, я должен иметь возможность подсчитывать их из jQuery. Есть. Обновлено — надеюсь, это поможет.3. потрясающе, могу ли я заставить его двигаться снизу вверх, а не справа налево?
4. Да, заменив левое поле на верхнее. Одна минута, и я обновлю его.
5. Черт возьми, это сложнее, чем я думал. Проблема в том, что
table
s являются блочными элементами и, следовательно, создают свой собственный перенос строки, поэтому с ними сложно работать с верхним пределом.