2013-02-25 3 views
0

Вот мой код:JQuery конкретного содержания загрузки не работает с # ссылкой

http://jsfiddle.net/h3ctt/

Если перейти к www.example.com/page.html#example-name1 без загрузив страницу первым он покажет всю страницу и не запрашиваемый контент.

Однако, если вы перейдете к ссылке после загрузки страницы, она будет работать и отображать желаемый контент.

Это очень странно. У кого-нибудь есть проблема?

+0

вам нужно запустить свой код на странице загрузки, а также об изменении хэш, однако также принять во внимание, что некоторые браузеры вызывают onhashchange на странице загрузки, если есть хэш iirc. –

+0

Не могли бы вы привести мне пример этого, поскольку я очень новичок в JS/jQuery – Simon

ответ

0

Я уверен, что вы не можете отобразить эту функциональность на jsfiddle, однако если бы вы были на правильной странице, page.html # example-name1 в строке url должен привести к желаемой функциональности для отображения. Однако, чтобы заставить его работать на правильной странице, вам нужно будет сделать то, что предложили aboodred1 с вашим кодом, т. Е. Запустить код на hashchange. Это необходимо для обеспечения того, что при изменении URL-адреса отображается конкретный контент.

+0

Но тогда, когда вы загружаете страницу без какого-либо # примера, как вы можете сделать это, чтобы показать весь контент. – Simon

+0

@Simon, так что вы хотите показать весь контент на странице? Или вы говорите, что хотите выбрать неспецифический элемент? – Bernie

+0

Я хочу, чтобы весь контент на странице загружался. Однако, когда URL-адрес изменен на page.html # example1, на странице отображается только выбранный div. – Simon

1

Вы должны проверить хэш onload и onhashchange

// On page load 
$(document).ready(function(){ 
    // When the hash (#something) changes 
    window.onhashchange = function() { 
     doAction(); 
    }; 

    doAction(); 

    function doAction() { 
     // get the current hash minus '#' 
     var profileId = window.location.hash.substr(1); 

     if(profileId != '') { 
      // hide all profiles 
      $('.profile').hide(); 
      // show only the appropriate profile 
      $('#' + profileId).show(); 
     } 
    } 
}); 
+0

Это работает. Моя единственная проблема заключается в том, что я хочу отображать весь контент сразу, где нет «# # + profileId». Это можно сделать с помощью инструкции IF, если да, то как это реализовать? – Simon

+0

Что вы подразумеваете под «отображением всего содержимого сразу»? хотите отобразить профиль 1 и профиль 2, если нет «'#' + profileId"? или вы хотите отобразить первый элемент, если нет хэша? – Aboodred1

+0

Первый, отображающий профиль 1 и профиль 2, если нет «'#' + profileId». – Simon

Смежные вопросы