Я пытаюсь изменить этот скрипт для портфолио здесь: http://themes.iki-bir.com/webpaint/multipage/full/portfolio.html
Он использует URL-адреса, такие как #entry-12
(используя номер индекса элемента для деактивации элемента), и я хотел бы изменить его на #this-is-an-item
updateURLParameter(thumb.attr("data-event-id"));
//updateURLParameter("entry-"+thumb.index());
Здесь задается имя (которое отлично работает)... теперь оно whatever.html # this-is-an-item
Но теперь мне нужно изменить поведение, когда они ссылаются на URL-адрес (поскольку он больше не работает, так как он все еще ищет индексный номер вместо имени).
var deeplink = getUrlVars("#");
// DEEPLINK START IF NECESSARY
if (deeplink[0].split('entry-').length>1) {
var thmb = parseInt(deeplink[0].split('entry-')[1],0)+1;
$container.find('.item:nth-child('+thmb+')').click();
$container.find('.item:nth-child('+thmb+')').addClass("active").children('a').children('div').fadeIn(300);;
}
Я просто не уверен, как сделать последнюю часть, поэтому он ищет идентификатор данных-события вместо индекса?
<li class="item installation 2013-10-13" data-event-id="installation-opening-whispering-in-the-leaves"... </li>
Попробуй это:
var deeplink = getUrlVars("#");
var $elem;
// v--- this can be changed to .find('.item) if needed.
$container.children('.item').each(function() {
// you can use .data(...) instead of .attr("data-...")
if ($(this).data("event-id") == deeplink[0])
$elem = $(this);
});
if ($elem) {
$elem.click()
.addClass("active")
.children('a')
.children('div')
.fadeIn(300);
}
Просто перебирайте все элементы в $container
с классом .item
и проверьте, совпадает ли data-event-id
с ним в хеше URL. Если это произойдет, сохраните его и выполните свои действия после этого.