powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / (JS) JQuery Перелистыватель страниц на аяксе
23 сообщений из 23, страница 1 из 1
(JS) JQuery Перелистыватель страниц на аяксе
    #36078897
eualexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброе утро.
делаю переключалку страниц.
Ожидаемый механизм:
1) нажал на ссылку,
2) запустился скрипт
3) вытащил то что находится между <a href></a>
4) отправил куда надо.
Использовать Get не хочу, надо так как указано выше. Каменем преткновения стал п.3

Код: plaintext
1.
2.
3.
<a href='javascript: page_list(); '> 2 </a> | 
<a href='javascript: page_list(); '> 3 </a> | 
<a href='javascript: page_list(); '> 4 </a> | 
<a href='javascript: page_list(); '> 5 </a>
Скрипт
Код: plaintext
1.
2.
3.
function page_list () {
	var page_no	=	$(this).и приехали
        alert(page_no);
})
вот тут скорее всего ответ, но мне не помогло. Как вытащить текст?
Спасибо!
...
Рейтинг: 0 / 0
(JS) JQuery Перелистыватель страниц на аяксе
    #36079672
eualexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нашел такую информацию
<a href='#' onclick='alert(this.innerHTML); '>1</a>
при нажатии получаю значение заключенное между тегами а. а вот как через функцию?
...
Рейтинг: 0 / 0
(JS) JQuery Перелистыватель страниц на аяксе
    #36079821
spider13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
$(function () {
  $("a").click(function () {
    alert(this.innerHTML);
  });
});

Вставляешь это в скрипт, и все
...
Рейтинг: 0 / 0
(JS) JQuery Перелистыватель страниц на аяксе
    #36080131
eualexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spider13,

Вот так заработало.
спасибо огромное!!!
...
Рейтинг: 0 / 0
(JS) JQuery Перелистыватель страниц на аяксе
    #36080895
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если используешь jQuery, то уже используй его ...
Код: plaintext
1.
2.
$("a").click(function () {
    alert($(this).html());
});
Это более совершенный метод.
...
Рейтинг: 0 / 0
(JS) JQuery Перелистыватель страниц на аяксе
    #36080999
eualexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IDVsbruck,

Спасибо это помогло. правда сначала помучался. скрипт в итоге такой
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
function page_list () {
var pg_no	=	'';
var dt		=	'';
$("a").click(function () {
  pg_no=$(this).html();
  dt='json={"page_number":"' + pg_no + '"}';
  $.ajax({
    type: "POST",
    cache: false,
    dataType: "json",
    data: dt,
    url: "cabinet.php",
    success: function(data, textStatus){
    $("#central_wrap").append(data.page);
  });},
  error: 	function(){alert("I cannot reach server");}})});
}
Что удивило - так это если $.ajax не вложен в $("a"). то переменная pg_no не уходит ибо к моменту отправки запроса на сервер у этой переменной значение пусто. если выставить алерты (в случае невложенности $.ajax) то видно что сначала уходит запрос на сервер а потом происходит присвоение значения переменной pg_no.
...
Рейтинг: 0 / 0
(JS) JQuery Перелистыватель страниц на аяксе
    #36081798
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обычное заблуждение новичка по поводу скриптового однопоточного языка ... :)
Очень помагает использование параметра beforeSend в $.ajax:
Код: plaintext
1.
2.
3.
4.
5.
$("a").click() {
    $.ajax({
        beforeSend:function(){
            var pg_no = $(this).html();
            var dt = 'json={"page_number":"' + pg_no + '"}';
        }, ...

И снова совет больше читать доки - по jQuery ее хватает в инете и на английском, и на русском.
...
Рейтинг: 0 / 0
(JS) JQuery Перелистыватель страниц на аяксе
    #36081856
eualexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IDVsbruck,

да последнее время только jquery и читаю. Сейчас вот сижу разбираю хождение по DOM на примере таблицы.
Код: plaintext
1.
2.
3.
4.
<table class='tbl'><tr>
<td> 1 </td>
<td> 2 </td>
<td> 3 </td>
</tr></table>
хочу по клику на таблице добраться до значения ячейки по которой кликнул ну и соответсвенно получить
1) её содержимое
2) иметь возможность манипулировать ею:
2.1 взять содержимое,
2.2 поместить в ячейку input,
2.3 ввести данные в input
2.4 при потере фокуса отправить значение input'а на сервер, а из
2.5 ячейки убрать input оставив только значение
Планы наполеоновские.
Уже дошел до п.1
Код: plaintext
1.
2.
3.
$(".tbl").click(function(){
  me=$(this).children().children().html();
  alert(me);
});
Если добавлять ещё 1го ребенка то получу значение первого столбца перовой строки, что не есть правильно.
...
Рейтинг: 0 / 0
(JS) JQuery Перелистыватель страниц на аяксе
    #36082355
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, будут конкретные вопросы - всегда пожалуйста ... (непонятно, чего хочешь)
...
Рейтинг: 0 / 0
(JS) JQuery Перелистыватель страниц на аяксе
    #36082786
eualexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IDVsbruck,

Есть таблица. я хочу редактировать записи в ней, для этого мне надо превращать ячейку из вида
<td>значение</td> в <td><input type='text' value='значение'></td>
Для этого надо уметь находить ту ячейку над которой был произведен клик мышью.
Как это делать я пока что понять не могу.
...
Рейтинг: 0 / 0
(JS) JQuery Перелистыватель страниц на аяксе
    #36082953
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что мешает назначить обработчик события самой ячейке? Только не забудь поставить stopPropagation(), чтобы не убить возможные обработчики для строк, блоков, таблиц или контейнеров.
Можно что-то типа такого:
Код: plaintext
1.
2.
3.
4.
$(".tbl td").click(function(){
    $("<input type='text'>").val($(this).text()).attr("className", "your_class_name")\
        .bind("blur", function(){$(this).unbind("blur"); $(this).parent().html($(this).val()).remove(this)})
        .appendTo(this);
});
При клике делается встроенная строка ввода, куда помещается значение и обработчик обработки потери фокуса, а при потере фокуса.
...
Рейтинг: 0 / 0
(JS) JQuery Перелистыватель страниц на аяксе
    #36083371
eualexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IDVsbruck,

Вот что я сочинил поразмышляв полдня над представленным ранее скриптом
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
 01  $(".tbl td").click(function(){
 02    var newElement=$("<input type='text' name='change' width='1px'>").val($(this).text()).css("width", "1px");
 03    $(this).bind("click", function(){
 04       $(this).unbind("click");
 05       $(this).empty();
 06       $(this).append(newElement);
 07       $("input[name='change']").animate({width: "50px"},  500 );
 08       $(this).bind("blur", function(){
 09          $(this).unbind("blur");
 10          var newValue=$("input[name='change']").val();
 11          $(this).empty();
 12          $(this).append(newValue);})})

В 8 и 9 строке не могу сделать так чтобы закончив редактирование элемента из ячейки удалялся input и оставалось одно значение.
Что ещё заметил.
Если в 8 9 строке к bind прикрутить click то
1) input удается обратно сконвертировать в текст при этом соответвенно ничего в поле ввести нельзя потому что кликнув мышью по нему оно тут же становиться обычным текстом, но самое интересно что
2) повторно то же самое поле обратно нажатием на ячейку в input не превратить. Почему? и Как это исправить?
Как тут сделать так чтобы после окончания ввода (которым является нажатие Enter) поле обратно превращалось в текст сохранив значение
...
Рейтинг: 0 / 0
(JS) JQuery Перелистыватель страниц на аяксе
    #36083394
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хочется плакать ... это ты в обработчике клика делаешь обработчик клика, а затем снимаешь его? Тебе надо, чтобы кликнуть можно было только один раз?

Кстати, не обязательно каждый раз писать $(this), можно использовать много функций через точку - и компактнее, и для библиотеки проще - не надо плодить кучу ссылок на объект.

Впечатление такое, что ты сам не знаешь что хочешь сделать и получить. Попробуй писать сценарии выполнения действий, а потом реализовывай их в коде - возможно, хаос уменьшится. А еще лучше попробуй не пользовать jQuery, а сначала писать на чистом языке, а потом уже оптимизировать. Извини, что сравниваю, но первое, что приходит на ум - "обезьяна с гранатой" :)
...
Рейтинг: 0 / 0
(JS) JQuery Перелистыватель страниц на аяксе
    #36084783
eualexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IDVsbruck,

по поводу "обезьяна с гранатой" - от души посмеялся и не спорю. все когда то были ими))) и все же прочитав про обезъяну уже с подготовленным кодом пришла новая мысль. все стер и написал заново во
Код: plaintext
1.
2.
3.
4.
5.
6.
$(".tbl td").click(function(){
var newValue=$("input[name='change']").val();
$("input[name='change']").replaceWith(newValue);
var newElement=$("<input type='text' name='change' width='10px'>").val($(this).text()).css("width", "10px");
$(this).unbind("click").empty().append(newElement);
$("input[name='change']").animate({width: "40px"},  500 );
})
также добавил if(event.keyCode == 0xD) { } - при нажатии не ентер инпут пропадает остается значение.
В итоге на удивление работает так как я и хотел изначально.
один момент только хотелось узнать
Почему я не могу редактировать значение которое уже было отредактировано? Повторно нажав на ячейку ничего не происходит.
...
Рейтинг: 0 / 0
(JS) JQuery Перелистыватель страниц на аяксе
    #36084800
eualexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сам спросил сам нашел. причина в unbind("click").
Если в коде есть unbind("click") - значит click больше не действует на эту ячейку.
Если убрать из кода то повтороный click работает, но при этом ячейка каждый раз передергивается - т.е. вариант не из разряда нормально работающих.
Как быть?
...
Рейтинг: 0 / 0
(JS) JQuery Перелистыватель страниц на аяксе
    #36084948
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что ж ты хотел? - ты очищаешь ячейку и хочешь, чтобы не "передергивалась"? :)
Текст-то находится в разных контейнерах, абсолютно гладко не получится. Или я не понял что есть "передергивание" ...
Если сильно поизвращаться, то можно придумать плавные переходы или затемнения. Но надо ли?
...
Рейтинг: 0 / 0
(JS) JQuery Перелистыватель страниц на аяксе
    #36084978
eualexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IDVsbruck,

'передергивание' это надо попробовать код в действии тогда будет понятно.
В последней версии кода меня не устраивает только то, что невозможно повторно редактировать ту ячеку которая уже была отредактирована . Как это осуществить - пока не придумал.
...
Рейтинг: 0 / 0
(JS) JQuery Перелистыватель страниц на аяксе
    #36085135
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так ты правильно сказал - убери отключение обработчика и все.
И еще не понятно - при первом клике откуда взяться элементу $("input[name='change']")?

Код: plaintext
$(".tbl td").click(function(){$("<input type='text'>").val($(this).text()).width( 10 ).animate({"width":"40px"},  500 ).keypress(function(event) {if (event.which ==  13 ) $(this).animate({"width":"10px"},  200 , function(){$(this).parent().empty().html($(this).val())})}).appendTo(this)});
Конструкция слегонца стремная - нет уверенности, что сборщик мусора уберет удаленные инпуты, хотя иногда jQuery меня очень удивляет. Не удивлюсь, если он их за собой почистит. Надо пару десятков раз нажать и изменить значения, немного обождать и сравнить состояние памяти (или специфическим софтом) - очень даже может быть, что вызовы функций в жКвери несут не рекурсивный, а глобальный событийный, так что действия над объектами ведутся не относительно объектов, а относительно глобального jQuery, поэтому он может позволять удалять элемент из его же обработчика события.

Также не забудь сделать обработчик нажатия Esc и потери фокуса (наверное, одно и то же).
...
Рейтинг: 0 / 0
(JS) JQuery Перелистыватель страниц на аяксе
    #36085368
eualexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IDVsbruck,

IDVsbruckИ еще не понятно - при первом клике откуда взяться элементу $("input[name='change']")?
Эти 2 строчки добавлены для того чтобы при смене редактируемой ячейки сначало сохранялась старая ячейка (с удалением элемента input), таким образом получается постоянно на странице есть только 1 элемент типа <input name='change'>
А при первой загрузки страницы с этим скриптом элемента <input name='change'> ещё не существует.
А код 1ой строкой - не работает (не так как надо) в нем
1) При нажатии на ячейку открывается input (при этом значение ячейки стоит слева от него в таблице, т.е. получается структура
Код: plaintext
<td>значение<input name='change' value='значение' /></td>
а должно быть
Код: plaintext
<td><input name='change' value='значение' /></td>
2) курсор в input не попадает (его можно туда загнать только если нажать на нем правую кнопку мыши. Если нажать левую - то к существующей конструкции добавляется ещё один input, т.е. имеем уже
Код: plaintext
<td>значение<input name='change' value='значение' /><input name='change' value='значение' /></td>
и так прплюсовыветс столько input'ов сколько раз была нажата левая кнопка на нем.
Сижу думаю.
...
Рейтинг: 0 / 0
(JS) JQuery Перелистыватель страниц на аяксе
    #36085387
eualexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IDVsbruck спасибо за помощь!
Додумался в результате вот то что нужно было
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
$(".tbl td").click(function(){
	if(this.firstChild.nodeType== 3 ){
		var newValue=$("input[name='change']").val();
		$("input[name='change']").replaceWith(newValue);
		var newElement=$("<input type='text' name='change' width='10px'>")
			.val($(this).text())
			.css("width", "10px");
		$(this).empty().append(newElement);
		$("input[name='change']").animate({width: "40px"},  100 );
	}
	$(this).keypress(function(event) {
		if (event.which ==  13 ){
		var newValue=$("input[name='change']").val();
		$("input[name='change']").replaceWith(newValue);}
	})
})
...
Рейтинг: 0 / 0
(JS) JQuery Перелистыватель страниц на аяксе
    #36387929
Задача почти как у eualexey.
Только надо при клике на любой ячейке заносить в поля редактирования всю запись.
скрин
Кнопки навигации осуществляют в порядке очереди переход на первую, предыдущую, следующую и последнюю запись.
"Вставить" - добавление новой записи в конец таблицы и в базы.
"Удалить" - удаление выделенной записи из таблицы и базы.
"Редактировать" - подтверждение изменений в выделенной записи и базе.
...
Рейтинг: 0 / 0
(JS) JQuery Перелистыватель страниц на аяксе
    #36387972
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что конкретно непонятно? - Приводи код, поможем.
...
Рейтинг: 0 / 0
(JS) JQuery Перелистыватель страниц на аяксе
    #36388045
IDVsbruckЧто конкретно непонятно? - Приводи код, поможем.
конкретно непонятно как вытащить при обработке события onclick данные для занесения в поля редактирования.
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / (JS) JQuery Перелистыватель страниц на аяксе
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]