Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> JQ: Обращение к функции из корня документа, jQuery load() вызов функции 
V
    Опции темы
InfMag
Дата 20.7.2009, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


…
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 21.11.2004

Репутация: нет
Всего: 4



Доброго всем времени суток!

Возникла такая вот задача с которой не получается справиться: есть страничка на которой подключена jQuery и описаны мои функции, по одной из функций выполняется JQ - load(), которая методами аякса подгружает страничку, в той же страничке, которая подгрузилась следует обратиться к сией объявленной функции, чтобы открыть на ее месте другую страничку. Ан нет! Не передается ни функция, ни переменная в подгруженный файл, а вот если прямо на JQ написать без моих функций тоже самое - все работает как по маслу.
Как можно рационально реализовать мою задачу?

Вот код вкратце.
Код
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script src="_js/jquery-1.3.2.min.js" type="text/javascript"></script>
<script src="_js/scripts.js" type="text/javascript"></script>
</head>

<body>
<div id="general_container">
<div id="lang_select"></div>
<div id="content_container"><div id="content"></div></div>
</div>
</body>
</html>


scripts.js
Код

var    lang = "ru", // язык по умолчанию
    homepage = "page1"; // страница по умолчанию



function open(page)
{
    $("#content").load(lang+"/"+page+".html");
}

function chlang(lng)
{
    if (lng == "en") lang = "en"; else lang = "ru";
    
    if (lang == "en")
    {
        $("#lang_select").html("<a title=\"Русская версия\">Русский</a> / English");
        $("#lang_select a").click(function(){chlang('ru');});
    } else {
        $("#lang_select").html("Русский / <a title=\"English version\">English</a>");
        $("#lang_select a").click(function(){chlang('en');});
    }
    
    open(homepage);
}



$(document).ready(function(){
    open(homepage);
    chlang(lang);
});


ru/page1.html
Код

Вторая страница <a onclick="open('page2')">ГОУ</a> не работает, не может достучаться до функции<br />
Вторая страница <a onclick="$('#content').load('ru/page2.html');">ГОУ</a> всё путем! переходит на вторую страницу<br />


ru/page2.html
Код

Вуаля! Сэконд пэйдж!

PM   Вверх
IDVsbruck
Дата 20.7.2009, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 778
Регистрация: 12.11.2006

Репутация: 4
Всего: 22



Если бы еще понять что ты написал, можно было бы и помочь ...
PM MAIL   Вверх
unicross
Дата 20.7.2009, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 422
Регистрация: 15.6.2008

Репутация: 5
Всего: 53



Код

var    lang = "ru"; // язык по умолчанию
var    homepage = "page1"; // страница по умолчанию
function open_page(page) {
    $("#content").load(lang + "/" + page + ".html");
}
function chlang(lng) {
    if (lng == "en") lang = "en"; else lang = "ru";
    
    if (lang == "en") {
        $("#lang_select").html("<a href=\"#\" title=\"Русская версия\">Русский</a> / English");
        $("#lang_select a").click(function() {
           chlang('ru');
        });
    }
    else {
        $("#lang_select").html("Русский / <a  href=\"#\" title=\"English version\">English</a>");
        $("#lang_select a").click(function() {
           chlang('en');
        });
    }
    open_page(homepage);
}

$(document).ready(function() {
   $.ajaxSetup({
      cache:false
   });
   chlang(lang);
});


Код

Вторая страница <a href="#" onclick="open_page('page2'); return false;">ГОУ</a> <br />


PM MAIL WWW   Вверх
InfMag
Дата 20.7.2009, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


…
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 21.11.2004

Репутация: нет
Всего: 4



unicross, спасибо за приведенный пример, суть правда пришлось извлекать методом тыка, в заключении я вывел для себя: не стоило использовать в качестве имени функции "open", ибо это либо в библиотеке jq, либо в самой системе js задействовано и создает конфликты. Изменив лишь имя функции - обращение к ней идет как по маслу!
PM   Вверх
unicross
Дата 20.7.2009, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 422
Регистрация: 15.6.2008

Репутация: 5
Всего: 53



Цитата(InfMag @  20.7.2009,  15:32 Найти цитируемый пост)
 суть правда пришлось извлекать методом тыка, в заключении я вывел для себя: не стоило использовать в качестве имени функции "open", ибо это либо в библиотеке jq, либо в самой системе js задействовано и создает конфликты. 

 smile Но это не единственное изменение...
Цитата(InfMag @  20.7.2009,  12:49 Найти цитируемый пост)
    open(homepage);    chlang(lang);

Зачем дважды делать запрос?
PM MAIL WWW   Вверх
InfMag
Дата 20.7.2009, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


…
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 21.11.2004

Репутация: нет
Всего: 4



unicross, на это я тоже внимание обратил, спасибо, я говорил именно о главном сабже. Вместо href-а я просто описываю стиль
Код
A{cursor:pointer;}
 ну и остальное. И вопрос - какую роль в Вашем примере играет return!1?
PM   Вверх
unicross
Дата 20.7.2009, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 422
Регистрация: 15.6.2008

Репутация: 5
Всего: 53



Цитата(InfMag @  20.7.2009,  16:14 Найти цитируемый пост)
 И вопрос - какую роль в Вашем примере играет return!1?

Замените содержимое page1.html на
Код
Вторая страница <a href="index1.html" onclick="open_page('page2');">ГОУ</a>

А потом попробуйте перейти по ссылке... smile 

Сразу объясню... Метод load() делает асинхронный запрос на сервер. Это означает, что переход по ссылке будет осуществлен ДО получения ответа с сервера... Если не указать return false, то вы уже будете на странице index1.html. Оттуда ответ на ваш запрос уже не получите...
PM MAIL WWW   Вверх
InfMag
Дата 21.7.2009, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


…
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 21.11.2004

Репутация: нет
Всего: 4



unicross, и все-таки не понимаю... Я ведь не указываю href вообще, по сути и проблем таких возникнуть не должно? Разве я не прав?
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Применение библиотек | Следующая тема »


 




[ Время генерации скрипта: 0.3628 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.