Как я могу изменить имена хэштегов на любом слайдере? - PullRequest
1 голос
/ 17 января 2012

Я использую anythingslider, и если вы знакомы с ним, вы можете знать, что он имеет следующую функцию:

hashTags : true,      // Should links change the hashtag in the URL?

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

http://www.mysite.com/#&panel1-2

Мой вопрос: как вы можете изменить имена этих хэштегов на собственные имена для каждого слайда?

Сейчас я использую следующую функцию, чтобы отображать заголовок каждого слайда на панели навигации:

navigationFormatter : function(i, panel){
    return panel.find('h6').text();
}

И все, что я делаю, это добавляю заголовок в элемент <h6>. Итак, как я могу использовать эти названия для переименования хэштегов?

Ответы [ 2 ]

2 голосов
/ 17 января 2012

Вы можете отключить хэш по умолчанию и использовать обратный вызов onSlideComplete, чтобы обновить хэш окна ( демо ; и полноэкранная демо ):

* примечание: h6 также имеет идентификатор (без пробелов) по сравнению с текстом h6 (пробелы разрешены и используются на вкладках навигации)

HTML

<ul id="slider">   
    <li>
        <img src="http://placekitten.com/320/200" alt="" />
        <h6 id="meow">Meow</h6>
    </li>
    <li>
        <img src="http://placehold.it/320x200" alt="" />
        <h6 id="grey">Grey</h6>
    </li>
    <li>
        <img src="http://placebear.com/320/200" alt="" />
        <h6 id="rawr">Rawr</h6>
    </li>
    <li>
        <img src="http://dummyimage.com/320x200/000/fff.jpg" alt="" />
        <h6 id="bnw">Black & White</h6>
    </li>
    <li>
        <img src="http://placedog.com/320/200" alt="" />
        <h6 id="woof">Woof</h6>
    </li> 
</ul>

Сценарий

$('#slider').anythingSlider({

    // Should links change the hashtag in the URL?
    hashTags: false,

    // Details at the top of the file on this use (advanced use)
    navigationFormatter: function(index, panel) {
        return panel.find('h6').text();
    },

    // Callback when the plugin finished initializing
    onInitialized: function(e, slider) {
        slider.$items.find('h6').each(function(){
            // add some prefix to the id so setting the hash doesn't
            // make the page jump
            this.id = "tmp_" + this.id;
        });
    },

    // Callback when slide completes - no event variable!
    onSlideComplete: function(slider) {
        var hash = '#' + slider.$currentPage.find('h6')[0].id.replace(/tmp_/,'');
        // remove prefix so hash works on page load
        window.location.hash = hash;
    }

});

А вот еще одна демонстрация с использованием идентификаторов панели вместо идентификаторов h6.

0 голосов
/ 17 января 2012

Я никогда не использовал anythingslider, но если вы хотите изменить его хэштеги, вы можете начать поиск window.location.hash в скрипте, чтобы начать, так как часть генерации хеша началась бы там.

...