jcarousel - как я могу сделать ссылку на изображение в карусели активной

Мне удалось добавить jcarousel для навигации по моему html-сайту, построенному с использованием динамического шаблона. Однако мне нужно, чтобы ссылка на изображение отображалась активной, когда я нахожусь на странице, на которую она ссылается, чтобы зритель знал, где он находится. Кроме того, всякий раз, когда я перехожу на новую страницу, jcarousel возвращается к началу своей позиции прокрутки, когда мне нужно, чтобы она оставалась в последней позиции, в которой она была. Надеюсь, это имеет смысл. Я нашел отличную демонстрацию здесь, которую я скачал, но не могу понять, как удалить элементы, которые я хочу, из галереи изображений в демонстрации. http://blog.themeforest.net/tutorials/how-to-integrate-the-jquery-galleria-and-jcarousel-plugins/ Надеюсь, вы поможете!


person user442387    schedule 08.09.2010    source источник


Ответы (1)


Что-то вроде этого должно помочь вам начать.

ИЗМЕНИТЬ

Вот более полный пример. Теперь начальное значение извлекается из вашего URL.

Например. Если URL-адрес вашего веб-сайта — www.mysite.com/page2.html, вы можете добавить параметр URL-адреса (в данном случае «startVal»), доступ к которому можно получить через JavaScript.

Таким образом, ваш URL-адрес будет выглядеть как «www.mysite.com/page2.html?startVal=2», где startVal=2 определяет, какой элемент в карусели установлен в качестве выбранного начального элемента.

<script type="text/javascript">

var $sel = null;
$(document).ready(function () {

    // This function helps pull out items from your URL. (in this case 'startVal') 
    $.urlParam = function (name) {
        var results = new RegExp('[\\?&]' + name + '=([^&#]*)').exec(window.location.href);
        if(results == null){ //if results is null then return "0"
            return 0;
        }
        return results[1] || 0;
    }

    //Get the value of startVal from the QueryString. (in the example below, it would return 2)
    //EXAMPLE: www.mysite.com/page2.html?startVal=2
    var startVal = parseInt($.urlParam('startVal'));

    $('#mycarousel').jcarousel({
        start: startVal //Use the value of startVal to determine which item the carousel should default to on page load.
    });

    //Get the image you wish to default as selected, again we do this based off the startVal we received from the URL
    $sel = $('#mycarousel li:nth-child(' + startVal + ')').find('img');
    $sel.css('border', 'solid 2px blue'); //Here we can format it however we want

    //This function assigns a click event to each item in the carousel and changes which one is selected. 
    $('#mycarousel img').click(function () {
        $sel.css('border', 'solid 0px white');
        $(this).css('border', 'solid 2px blue');
        $sel = $(this);
    });
});

</script>

ИЗМЕНИТЬ

Вам также нужно будет добавить свою собственную проверку. Прямо сейчас я не проверяю, является ли "startVal" нулевым или находится ли запрошенный начальный индекс в диапазоне доступных элементов.

ИЗМЕНИТЬ

Таким образом, для каждого URL-адреса на вашем сайте вам нужно будет добавить параметр строки запроса, чтобы определить, какой элемент в карусели выбран.

Примеры:

  • www.mysite.com/page1.html?startVal=1
  • www.mysite.com/page2.html?startVal=2
  • www.mysite.com/page3.html?startVal=3
  • www.mysite.com/page4.html?startVal=4

Вам нужно будет убедиться, что запрошенный элемент действительно существует. В противном случае, если URL-адрес запрашивает элемент номер 698 (www.mysite.com/page4.html?startVal=689), он не будет существовать, и вы можете получить ошибки.

Не хотел делать это еще более запутанным, но я надеюсь, что это внесло некоторую ясность.

person Brandon Boone    schedule 08.09.2010
comment
Эй, спасибо! Это отличное начало. Я вижу, что мой скроллер запускает 3 изображения. Единственная проблема заключается в том, что мой скрипт находится в моем веб-шаблоне, и у меня есть 50 страниц, поэтому мне придется посмотреть, как я могу отсоединить этот бит для каждого, чтобы установить для каждой страницы. Но с удовольствием сделаю это на данном этапе, если нет другого пути. Я вижу активный стиль границы, но он не остается выбранным, когда вы находитесь на выбранной странице (я знаю, глядя на множество других форумов, что это большая проблема). Любые идеи? В любом случае, спасибо за это, я чувствую, что это большой шаг вперед. - person user442387; 08.09.2010
comment
Смотрите мой обновленный ответ. Дайте мне знать, если есть что-то, что вы не понимаете. - person Brandon Boone; 08.09.2010
comment
Извиняюсь, но вы потеряли меня, я не в себе и очень расстроен, так как знаю, что этого не может быть. Думаю, мой единственный вариант - применить изменения к каждой странице в соответствии с вашим исходным кодом :( - person user442387; 08.09.2010
comment
Не уверен, что вы получили это в первый раз, но вот как выглядит код на моей странице, немного дополнительного скрипта, который отлично работал с другим вашим предложением, теперь я потерял карусель при предварительном просмотре. - person user442387; 08.09.2010
comment
Не хотел сбить вас с толку или усилить ваше разочарование. Я снова обновил свой ответ некоторыми аннотациями, которые, я надеюсь, прояснят для вас некоторые из них. Возможно, если вы предоставите ссылку на свой сайт или опубликуете свой исходный код, это поможет мне и другим устранить неполадки, почему он не работает. - person Brandon Boone; 08.09.2010
comment
Я добавил это, но при предварительном просмотре страницы карусель не отображается. Я открыл окно с ошибкой в ​​браузере, и в нем говорится, что «1» является нулевым или не является объектом, который ссылается на эту строку кода «return results[1] || 0; ' - person user442387; 09.09.2010
comment
Кроме того, я не был уверен, куда это должно идти, если (startVal == null) { startVal = 1 // Таким образом, по умолчанию всегда будет 1, если оно не было указано в URL-адресе. } - person user442387; 09.09.2010
comment
@superstar87 - я обновил свой ответ, так что теперь у вас не должно быть никаких ошибок, но я чувствую, что вы все еще не понимаете, что вам нужно добавить startVal=A NUMBER к вашему URL-адресу для этого работать. Вот почему карусель не отображалась в ваших тестах, и поэтому вы получали ошибки. У меня есть множество примеров выше того, как это должно работать и что вам нужно сделать, чтобы выбрать конкретное изображение при загрузке страницы. Если вы боретесь с концепцией URL-адресов (веб-адресов) и/или параметров запроса, дайте мне знать, и я постараюсь уточнить еще больше. - person Brandon Boone; 09.09.2010
comment
Спасибо! Спасибо! Спасибо! Это великолепно! Спасибо за ваши знания, ваше терпение и вашу щедрость, это очень ценится. наилучшие пожелания. - person user442387; 09.09.2010
comment
@superstar87 - с удовольствием. Если бы вы могли отметить это как ответ, я бы тоже был признателен. - person Brandon Boone; 09.09.2010