Михаил
Спасибо за ответ. Я тут скачал файл jQuery со страницы примеров Interface и всё работает.
Dmitrii ‘Mamut’ Dimandt
К соджалению, я sotables ни разу не пользовался. На?ел эту проблему в багах на jQuery , но там она, похоже, еще не ре?ена
Михаил
Здравствуйте.
С jQuery познакомился из ва?ей статьи. Поэтому ре?ил к вам и обратиться с проблемой.
?меем jQuery + interface.js (плагин Sortables) с целью организовать две колонки (блока) в которых могут отображаться по несколько вложенных блоков в виде око?ек.
Вложенные блоки можно перетягивать туда-сюда меняя их сортировку, а также из одной колонки в другую.
Т.е. оно самое вот: http://test.mkechinov.ru/rc/rc.htm
(пардон за отсутствие кавычек у значений атрибутов – это IE так сохраняет)
? возникла проблема: в FireFox и Opera почти как всегда всё работает, а вот в IE каждый перемещемый блок можно переместить только один раз. После этого он отказывается реагировать на мои попытки. Причем сейчас у меня блоки генерируются из JSON-массива, а можно поставить их там статично (забить HTML вручную), результат один и тот же будет. Хотя вроде всё как по инструкции.
Можете подсказать?
Спасибо заранее.
Dmitrii ‘Mamut’ Dimandt
Можно сделать на основе чекбоксов. ?мена чекбоксам задавать типа checkbox[1], checkbox[2] и так далее. При смене позиции просто заново переназначить им имена, что-то типа
var i = 1;
$(‘input .sortable_checkboxes’).each(
function(){
$(this).attr(‘name’, ‘checkbox[’ + i + ‘]’);
i++;
}
);
На стороне сервера, если известно кол-во элементов, можно так (PHP):
for($i = 1; $i < $no_of_elements; $i++)
{
echo $_REQUEST['checkbox'][i];
}
Если кол-во элементов неизвестно, то можно
foreach($_REQUEST['checkbox'] as $element)
{
echo $element;
}
Если $_REQUEST[‘checkbox’] вдруг неотсортировано по возрастанию (что вряд ли), можно через array_sort вернуть его в чувство :)
Это самое первое, что приходит в голову :)
На самом деле я с sotables не работал, но общая идея примерно такая :)
spiritzzz
А как вы мне посоветуете ре?ить след. задачу:
Есть список элементов, (
Dmitrii ‘Mamut’ Dimandt
jQuery UI я как-то пощупал, оно меня не впечатлило, и я его забросил :)
spiritzzz
Спасибо боль?ое, ОПЯТЬ вы меня выручили, даже уже не знаю как Вас благодарить :)))
А вы с JQ UI не работали?
Dmitrii ‘Mamut’ Dimandt
1) хм.... сложно сказать :) Можно проверять, что файл был вызван через Ajax:
if($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest')2) в jQuery 1.2 есть crossdomain Ajax
spiritzzz
Здравствуйте еще раз :) При?ел поблагодарить вас за помощь, ОЧЕНЬ помогли ) Столкнулся с маасенькой проблемкой недавно, по инету рыскал – не на?ел ре?ения. Точнее две проблемки:
1) у меня есть файл index.php. У меня два варианта работы сайта, с js и без. Если без js – то по запросу index.php?page=test инклудится файлик pages/test.php.
в этом файлике pages/test.php инклудится другой файлик путем допустим include(rrr.php), причем файлик rrr.php находится там же, где и index.php. Если я загружаю в index.php файл pages/test.php при помощи jq, то путь для файла rrr.php становится уже другим, на каталог вы?е. Получается что файл pages/test.php считает себя корнем :) оно то и верно, но как с этим бороться попроще? :)
2) как я понял по причине безопасности ajax не подгружает НЕлокальные файлы и ссылки... как это можно обойти? :)
Dmitrii ‘Mamut’ Dimandt
Вау! Какие люди!
Я программистом в Ки?иневе работаю на данный момент. А помню я весь класс на коне 9-го класса :) Как же вас забыть :)))
Пи?ите посылки: dmitriid [] gmail.com
:)
екатерина
Дима, привет! Это Катя Шурманова, на?ла ссылку на твой с кем-то разговор на ки?инев. ру. очень рада, что ты меня помни?ь! я живу в Сочи, работаю журналистом на портале деловых новостей. меня и мом материалы мо?но найти, набрав в яндексе имя и фамилию. вот мой интернет адрес katarish@yandex.ru. очень скучаю по ки?иневу, приезжаю каждый год!
хочется узнать о твоих новостях!
Dmitrii ‘Mamut’ Dimandt
На этот вопрос сложно ответить внятно :)
Я с этим сталкивался в Файрфоксе на локальных файлах. Несмотря на то, что в href находится что-то простенькое и коротенькое, из DOM видно, что там лежит полный адрес (видно, например, в Firebug‘е).
Как это ре?ается – хз :) Можно попробовать использовать split
SpirITzzz
Спасибо огромное! :)))) и опять новая проблемка ))))))
Вот такой код
function index_func(news_main) { news_main.find(“a”).click(function(){
if ($(this).attr(“id”) "backbt"){
var url = "news.php";
act(url);
}
else if ($(this).attr("id") “newsbt”){
var url = “news.php” + $(this).attr(“href”);
act(url);
}
function act(url) {
news_main.hide(‘slow’,function(){
$(this).empty();
$.get(url,{}, function(response){ news_main.append(response).fadeIn(“slow”);
index_func(news_main);
});
});
При первом нажатии на ссылку с id newsbt выполняется else if, выполняется нормально, при нажатии на backbt возвращаемся назад, и вот тут идет проблемка: в else if когда я жму на ссылку с id newsb к url прибавляется полный адрес сайта с http:// и тд, хотя ссылка в виде ?news=3 и тд. Почему при первом нажатии ок, а после нажатия на кнопку с айди бэк прибавляется етот дурацкий адрес? :)
Dmitrii ‘Mamut’ Dimandt
Дело в том, что для загруженых ссылок надо заново вызывать функцию, их обрабатывающую. То есть что-то в таком стиле:
function updateLinks(container)
{ container.find(‘a’).click( function(){ var url = $(this).attr(‘href’); container.hide( ‘slow’, function(){ container.empty(); $.get( url, {}, function(response) { container.append(response) .fadeIn(‘slow’); updateLinks(container); } ) } ); return false; } );
}$(document).ready( function(){ var id = $(”#test”); updateLinks(id); }
)
SpirITzzz
Это опять я :)))) Возник еще один маааленький вопросик. Вот я выложил страницы с проблемой. http://true-studio.com/spiritzzz/test/page1.html
Суть в том, что есть страница page1.html, в которой есть div с id=test. Потом далее идет кусок ва?его кода, который все ссылки нажатые в этом диве грузит в етот же див. Все работает до этого момента: подгружается через get page2.html, которая находится в этом же div с id=test, но уже ссылки из неё не обрабатываются, и ссылка открывается как обычная.
где я туплю? :))))
Dmitrii ‘Mamut’ Dimandt
можно использовать callback:
$('element').hide(
'slow',
function(){
$(this).empty();
}
)
$('element').hide(
'slow',
function(){
$(this).html('текст').show('slow')
}
)
SpirITzzz
Дополнение:
Суть в том, что мне нужно что бы див плавно исчез, очистился, в него загрузилось что-то и так же плавно появилось :) Но на практике див начинает плавно исчезать, тут же не успев исчезнуть очищается, в него загружается не что, он до конца исчезает и опять с тем нечто появляется. Получается Эффект “Мегания”.
SpirITzzz
Спасибо боль?ое за ответ! =)
Еще созрел один вопрос:
Делаю вот так:
my_div.fadeOut(“slow”);
my_div.empty();
ну или так my_div.fadeOut(“slow”).empty();
? получается, что my_div очищается рань?е, че окончится действие fadeOut. Как это можно ре?ить?
Dmitrii ‘Mamut’ Dimandt
> 1)как с кодировками бороться
Это легко – просто передавать данные только в utf-8 (увы, только в нем)
> как сделать, что бы в пределах данного DIV все ссылки нажатые в нем подгружались только в нем (без перезагрузки всей страницы
var my_div = $(‘селектор_дива’);
my_div.find(‘a’).click( function(){ var url = $(this).attr(‘href’);
$.get( url, {}, function(response){ my_div.append(response); } ); return false; } );
> Верно ведь, что картинку загрузки ве?ать нужно на ajaxSend, а по окончанию убирать на например ajaxSuccess?
По идее да. Работает (в теории) оно так:
$(’#indicator’).ajaxLoad( function(){ $(this).show(); }
).ajaxSuccess( function(){ $(this).hide(); }
);
Но, если честно, оно у меня корректно так и не заработало :)
> Как мне проверять, загрузились ли все данные в данный див
Только в функциях, наве?иваемых на success аякса. То есть:
$.get(
url,
{},
function(response){
some_div.html(response).show();
}
);
$.ajax(
url: url,
success: function(response){
some_div.html(response).show();
}
);
SpirITzzz
Ну в частности меня интересует:
1)как с кодировками бороться :) ?бо если делать так $(”#main”).load(“pages/i/index_main.php”); то кракозябли :)
2) как сделать, что бы в пределах данного DIV все ссылки нажатые в нем подгружались только в нем (без перезагрузки всей страницы).
3) Не могу сделать нормальную индикацию загрузки. Верно ведь, что картинку загрузки ве?ать нужно на ajaxSend, а по окончанию убирать на например ajaxSuccess?
4) Как мне проверять, загрузились ли все данные в данный див? Что бы выводить его уже с полностью загруженной информацией? Тесно связано с вопросом 3) :)
В принципе, это все ре?аемо, но нужно время, которого у меня нет...
Dmitrii ‘Mamut’ Dimandt
Можно пока здесь :)
Можно также задать вопрос, например, в Веб-форуме на RSDN.ru Я там довольно быстро отвечаю (под ником Mamut)
NikitaSB
Бобруйск – кстати, реальный город в Белорусии!
Привет, не пропадай выходи на связь. На?ел тебя через СТ?Х?Р?. Вот за 2 последних года перерывчик получил, про?лое вспомнил – сразу по?ел старых друзей искать. Нафиг этот Бобруйск тебе сдался? Давай к нам в Днепр! Погуляем.
Работаю все там же. У меня дочка родилась. 9 месяцев. Квартиру тут купил недавно. Пи?и. ICQ: 298-963-631
Санжар
П.С. Дизайн сайта переделай. Неудобно.
10-04-2008 15:37:01permalink