Почему somethingSlider отключает мои пользовательские методы js на последнем слайде?

У меня действительно странная проблема, которую я не знаю, как решить. По сути, я использую anySlider, и все работает нормально. На каждом слайде есть 5 изображений, и когда пользователь наводит на них курсор, появляется небольшая подпись к изображению, а когда пользователь перемещает его за пределы изображения, подпись исчезает. У меня есть 3 слайда с этими изображениями, всего 15 изображений. Теперь - функция отлично работает на первых 2 слайдах, но не на последнем (т.е. слайде, содержащем изображения с 10 по 15). Кто-нибудь знает, почему? Это код, который я использую для отображения подписи:

<script type="text/javascript">

function is_child_of(parent, child) {
            if( child != null ) {           
                while( child.parentNode ) {
                    if( (child = child.parentNode) == parent ) {
                        return true;
                    }
                }
            }
            return false;
        }
function hide_thumb_caption(element, event, id) {
            var current_mouse_target = null;
            if( event.toElement ) {             
                current_mouse_target             = event.toElement;
            } else if( event.relatedTarget ) {              
                current_mouse_target             = event.relatedTarget;
            }
            if( !is_child_of(element, current_mouse_target) && element != current_mouse_target ) {
                $('#slider_thumb_'+id).slideUp('fast');
            }
        }

function show_thumb_caption(id) 
{
            $('#slider_thumb_'+id).slideDown('fast');
}
</script>

... и внутри слайдов я использую этот код для вызова этих методов:

<div class="top_slider_thumbs" onmouseover="show_thumb_caption(<?php the_ID(); ?>);" onmouseout="hide_thumb_caption(this, event, <?php the_ID(); ?>);">

Вот как устроен раздел заголовка:

<div class="top_slider_cap" id="slider_thumb_<?php the_ID(); ?>"><?php the_title();?></div>

person Pavel    schedule 29.01.2011    source источник
comment
Можете ли вы воссоздать пример на jsfiddle.net?   -  person andres descalzo    schedule 29.01.2011


Ответы (1)


Основная проблема в том, что AnythingSlider создает клон вашей первой и последней панели. Он помещает клон первой панели в конец и клон последней панели в начало. Основная причина заключается в том, чтобы сделать слайд inifinte плавным при нажатии «Далее» на последней панели или щелчке назад на первой панели.

Поскольку у ваших слайдов с заголовками есть идентификаторы, сценарий находит идентификаторы, содержащиеся в первой (клонированной) панели, а не в панели, которую вы планировали.

Последняя версия AnythingSlider (1.5.7+) делает две вещи:

  1. Теперь он полностью удаляет все идентификаторы в клонированных панелях.
  2. Он вообще не будет клонировать панели, если вы установите для новой опции infiniteSlides значение false. При значении false щелчок «Далее» на последней панели «перематывает» содержимое. А щелчок «Предыдущий» на первой панели перемотает слайды вперед до конца.
person Mottie    schedule 01.03.2011
comment
Спасибо друг! Я сходил с ума от этого! - person Pavel; 04.03.2011