При нажатии перейти на страницу и выполнить функцию - PullRequest
1 голос
/ 06 октября 2010

У меня есть страница с несколькими элементами (страница A). Это настроено, поэтому все скрыты, кроме одного. Когда вы нажимаете на ссылку, она скрывает показанную в данный момент и отображает только раздел, соответствующий ссылке, по которой вы щелкнули. У меня этот код работает отлично. У меня также есть отдельная страница (страница B), на которой есть список ссылок. Когда вы нажимаете одну из этих ссылок, я хотел бы загрузить страницу с несколькими элементами (страница A) и показать элемент, соответствующий ссылке, нажатой на предыдущей странице. Ниже приведен код, который у меня есть на данный момент. Он отлично загружает страницу, но не показывает соответствующий элемент (я думаю, потому что, может быть, этот элемент не существует, когда код выполняется, потому что страница все еще загружается?).

$(function() {
  $('li').click(function(){ //link that is clicked on
    var currentId = $(this).attr('id'); //capture id of clicked item
    window.location = 'next-page.php'; //load new page
    $('#all-elements').fadeOut(0); //hide all elements
    $('currentId').fadeIn("slow"); //show only corresponding element
    return false;
  });
});

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

Ответы [ 3 ]

4 голосов
/ 06 октября 2010

Это не будет работать, потому что код, который вы запускаете после window.location, выполняется на текущей странице, а не на странице, которую вы пытаетесь загрузить.

Чтобы страница, которую вы загружаете, выполняла любой javascript, она должна быть на ТО-странице, а не на текущей. Измените свой код как таковой, и он должен работать:

На странице B:

$(function() {
  $('li').click(function(){ //link that is clicked on
    var currentId = $(this).attr('id'); //capture id of clicked item
    window.location = 'next-page.php#' + currentId; //load new page
    return false;
  });
});

На странице A:

$(function() {
  $('#all-elements').hide(); //hide all elements
  $(window.location.hash).fadeIn("slow"); //show only corresponding element
});
1 голос
/ 06 октября 2010

Отправить идентификатор в качестве параметра на URL?

window.location = 'next-page.php? Id =' + $ (this) .attr ('id');

0 голосов
/ 06 октября 2010

Edit: Nevermind - OP включил сокращенную версию, и сегодня я узнал что-то новое:

http://api.jquery.com/ready/

- REMOVE - Попробуйте это.Это гарантирует, что ни один скрипт не будет вызван, пока DOM не будет готов.

$(document).ready(function () {
  $('li').click(function(){ //link that is clicked on
    var currentId = $(this).attr('id'); //capture id of clicked item
    window.location = 'next-page.php'; //load new page
    $('#all-elements').fadeOut(0); //hide all elements
    $('currentId').fadeIn("slow"); //show only corresponding element
    return false;
  });
});
...