2013-09-08 2 views
0

У меня есть одна страница с несколькими ссылками, открывающими разные галереи fancybox.Как создать ссылку для выполнения jQuery?

Каждая галерея «активирована», нажав на ссылку, как показано ниже (в данном случае для «galleryone»):

<a class="manualfancybox" data-gallery="galleryone" name="galleryone" id="galleryone" href="#galleryone"> 
    <img src="imageToClickToOpenGallery.png" /> 
</a> 

Каждой галереи (в данном случае «galleryone») создаются следующим код:

<div id="galleryone"> 
    <a href="001.jpg" rel="gal_one" class="fancybox" /></a> 
    <a href="002.jpg" rel="gal_one" class="fancybox" /></a> 
    […] 
    <a href="020.jpg" rel="gal_one" class="fancybox" /></a> 
</div> 

Когда пользователь нажимает «imageToClickToOpenGalleryOne.png» он открывает «galleryone» FancyBox в полноэкранном режиме (еще раз спасибо JFK это нормально, что это именно так, как это должно быть

..

«Руководство FancyBox» использует следующий JQuery:

/* MANUALFANCYBOX by JFK (https://stackoverflow.com/users/1055987/jfk) */ 
$(document).ready(function() { 
    $(".manualfancybox").on("click", function() { 
     var gallery = "#" + $(this).data("gallery"); 
     $(gallery).find(".fancybox").eq(0).click(); 
     return false; 
    }); 
}); 

ВОПРОС: Как я могу сделать ссылку, как http://www.mysite.com/#galleryone открыть «galleryone», как если пользователь получил доступ к моей странице и нажал на «imageToClickToOpenGalleryOne.png» ?

Javascript, jquery, php ... .htaccess ?? Я сам не в состоянии события подумать, не говоря уже добиться решения ...

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

+1

Вы видели http://stackoverflow.com/a/9030970/1055987? это может потребоваться немного подстроить, хотя – JFK

+1

для ссылки, подобной этой 'http: // www.mysite.com/# galleryone', вам нужно только добавить это в свой код:' if (window.location.hash) {$ (window .location.hash) .trigger ('щелчок'); } '.** ВАЖНО **: просто убедитесь, что вы поместили это ** ПОСЛЕ ** инициализации 'fancybox()' или в конце вашего метода 'ready()'). – JFK

+0

Да, JFK, он работал с этим кодом yaaaayyyyy !!! Единственное, что по какой-то причине больше не показывает фон галереи, поэтому я не могу щелкнуть нигде вне изображения, чтобы закрыть окно с изображением (оно работает только с клавишей ESC). Но этот ответ, который вы дали по другому вопросу (stackoverflow.com/a/9030970/1055987), отлично работает. Я попробую, а потом вернусь. – OleSchmitt

ответ

1

для ссылки, как этот

http://www.mysite.com/#galleryone 

вам нужно только добавить это к текущему коду:

if(window.location.hash) { 
    $(window.location.hash).trigger('click'); 
} 

ВАЖНО: убедитесь, что вы поместите этот ПОСЛЕ в fancybox() инициализации (или в конце вашего метода ready()).

EDIT: ОП сказал:

it's working but it's not showing the gallery background anymore, 
therefore I can't click anywhere outside the image 
to close the image window (it does work with "ESC" key though). 

кажется, поднимете вопрос, попробуйте разместить ваш скрипт вызывает в следующем порядке:

<script src="../scripts/jquery.fancybox.min.js" type="text/javascript"></script> 
<script src="../scripts/scripts.js" type="text/javascript"></script> 

FancyBox следует назвать перед в scripts.js, где вы разместили код $(window.location.hash).trigger('click');. Прямо сейчас scripts.js называется первым.

+0

О, ТЕПЕРЬ Я получил его! Совершенно отлично сейчас. Большое спасибо. – OleSchmitt

1

Вы хотите использовать идентификатор фрагмента в URL-адресе. Чтобы получить это, используйте window.location.hash, чтобы получить все от символа хеша, например: «http://example.com#foobar» имеет 10 «#foobar». Вы можете проверить событие [window.onhashchange][1], чтобы узнать, изменился ли хэш. Затем вы можете разобрать хэш и загрузить все, что вам нужно.

+0

Забавный, единственный человек, который кажется чтобы понять вопрос получил -1 ??? (скорее всего, тот, кто проголосовал за этот ответ, не понял вопроса) – JFK

+0

Да, я думал то же самое JFK. И поскольку никто, казалось, не понимал мой вопрос, я Я долгое время загружал свой веб-сайт на свой веб-сервер, поэтому люди могли его видеть. – OleSchmitt