Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: вопрос по query
 
 автор: Дмитрий Смаль   (25.12.2009 в 11:25)   письмо автору
 
 

Здравствуйте!

использую query
заметил что если часть текста подгрузить через джаву и в этом тексте должно вызываться какие-то функции query, то они не работают.

пример.
я сделал список товаров и редактирование их с помощью всплывающей формы. после того как изменения внесены на основной странице список товаров заново подгружается через аджах.
после того как список товаров погрузился, ссылки на редактирование работают некорректно, то-есть функции query неработают.
использую thickbox.js
полез в код, вот часть кода которая вызывается с самого начала
var tb_pathToImage = "/templates/images/loadingAnimation.gif";

$(document).ready(function(){
    tb_init('a.thickbox, area.thickbox, input.thickbox');//pass where to apply thickbox
    imgLoader = new Image();// preload image
    imgLoader.src = tb_pathToImage;
});

function tb_init(domChunk){
    $(domChunk).click(function(){
    var t = this.title || this.name || null;
    var a = this.href || this.alt;
    var g = this.rel || false;
    tb_show(t,a,g);
    this.blur();
    return false;
    });
}

сама функция вызывается нажатием на ссылку в которой есть class="thickbox"

короче я код в скрипте заменил на
var tb_pathToImage = "/templates/images/loadingAnimation.gif"; 
function www(t,a,g){
    tb_show(t,a,g);
    imgLoader = new Image();// preload image
    imgLoader.src = tb_pathToImage;
}

а в саму ссылку добавил onclick="www(this.title,this.href,this.rel); this.blur(); return false;"

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

если кто поможет, буду благодарен

P.S.
сделал вызов функции так onclick="www(this.title,this.href,this.rel); return false;" осталась только одна проблема, при первом вызове функции появляется два всплывающих окна, второе ниже и пустое

  Ответить  
 
 автор: AlexSol   (25.12.2009 в 11:35)   письмо автору
 
   для: Дмитрий Смаль   (25.12.2009 в 11:25)
 

Jquery вы хотели написать, да?


>после того как изменения внесены на основной странице список товаров заново подгружается через аджах.

вы можете отследить этот момент погрузки, задать нужным ссылкам класс "new_thickbox" и вызвать
tb_init('a.new_thickbox');

  Ответить  
 
 автор: Дмитрий Смаль   (25.12.2009 в 11:43)   письмо автору
 
   для: AlexSol   (25.12.2009 в 11:35)
 

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

>>>>вы можете отследить этот момент погрузки, задать нужным ссылкам класс "new_thickbox" и вызвать tb_init('a.new_thickbox');
не понял как именно вызывать..
и такой вопрос, ведь редактирование одной записи может быть неоднократное, что тогда каждый ра новый класс делать?

насколько я понимаю скрипт начинает работать от этого $(document).ready(function()
получается что такая конструкция не работает после того, как текст в которой она вызывается подгружается через джавускрипт.
возможно как-то по другому начать вызывать скрипт? например через onclick, как я пытался сделать, но у меня неполучилось

  Ответить  
 
 автор: AlexSol   (25.12.2009 в 11:53)   письмо автору
 
   для: Дмитрий Смаль   (25.12.2009 в 11:43)
 

$(document).ready(function()
выполняется один раз. при заргузке страницы. это событие не отслеживает изменений вносимых вами при редактирование.

как именно вызвать? после того как внесли изменения
прямо так tb_init(' тут селектор к ссылке');


дайте ссылку на страницу или архив с исходником прикрепите

  Ответить  
 
 автор: Дмитрий Смаль   (25.12.2009 в 12:07)   письмо автору
37.9 Кб
 
   для: AlexSol   (25.12.2009 в 11:53)
 

прикрепил скрипт
сразу грузится список товаров (там один товар)

product

после внесения изменений список товаров изменяется

edit poduct

после этого всплывающая форма не включается и ссылка просто перекидывает на новую страницу

файл form.php - это файл всплывающей формы и он же обработчик формы
после отправки формы форма заново подгружается

  Ответить  
 
 автор: Дмитрий Смаль   (25.12.2009 в 13:29)   письмо автору
 
   для: AlexSol   (25.12.2009 в 11:53)
 

походу решил, но ещё не уверен, если у вас будет время то прокомментируйте

короче в новых ссылках делаю onclick="tb_show(this.title, this.href, this.rel); return false;" и похоже что работает, надо всё хорошо проверить

  Ответить  
 
 автор: AlexSol   (25.12.2009 в 13:33)   письмо автору
 
   для: Дмитрий Смаль   (25.12.2009 в 13:29)
 

перед return false можно еще this.blur(); добавить )
а так правильно

единственное - коли вы используете jquery то логично использовать именно его ajax методы
$.post() / $.get()

  Ответить  
 
 автор: Дмитрий Смаль   (25.12.2009 в 13:50)   письмо автору
 
   для: AlexSol   (25.12.2009 в 13:33)
 

я пока только осваиваю jquery, так что тут для аджакса использовал свой скрипт который мне понятен

вот что странно, на сервере форма отправляется на новую страницу.. пробовал в разных бразерах..
на локале всё работает отлично, файлы вроди все переписал

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования