Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.01.2011, 17:51
Интересующийся
Отправить личное сообщение для Karpo Посмотреть профиль Найти все сообщения от Karpo
 
Регистрация: 27.09.2010
Сообщений: 14

click выполняется один раз
Навигация по комментариям на сайте представляет собой ряд ссылок вида
<a id="menu" href="">1</a><a id="menu" href="">2</a><a id="menu" href="">N</a>
навигация реализована через ajax, но js код события onclick выполняется через ajax только один раз.далее идёт обычное обращение по ссылке.Так как страница перезагружается, то в следущий раз js снова работает.Не могу добиться многократного выполнения js.Вот код скрипта(извеняюсь за большой размер)
jQuery(document).ready(function() {
	jQuery("a#menu").click(
	function(){
		var href;
		var n;
		var values = {};

		href = jQuery("a#menu").attr("href");

		if(href.indexOf("http:") != -1)
		{
			href = href.substring(7);
		}

		if(href.indexOf("/") != -1)
		{
			url = href.split("/");
		}

		else 
		{
			url = href.split("\\");
		}
		n = url.length;
		if(n > 3)
		{
			
			values.controller = url[1];
			values.action = url[2];
			values.npage = url[3];
			if(n > 4)
			{
				values.npagecomment = url[4];
			}
		}

		else
		{
			values.error = "yes";
		}
		zapros = {"controller"	: values.controller,
					 "action"    	: values.action, 
					 "npage"     	: values.npage, 
					 "npagecomment": values.npagecomment};
					 
		jQuery.post("/comments/get", zapros, function(otvet, status){
			var string;
			var i;
			var n;
			var shablon;
			var comments;
			var comment;
			var one;
			
		
			
			string = "<div id=\"obsudit\">ОБСУДИТЬ</div><div id=\"tolst\" ></div>";
			string += otvet["menu"];
			n = otvet["vsego"];
			shablon = otvet["shablon"];
			comments = otvet["comments"];
			for(var i in comments) 
			{
				comment = comments[i];
		
				one = replace_string("<nikcom>",comment["nick"], shablon);
			
				one = replace_string("<dcom>",comment["day"], one);
	
				one = replace_string("<mcom>",comment["month"], one);
				one = replace_string("<ycom>",comment["year"], one);
				one = replace_string("<ttt>",comment["time"], one);
				one = replace_string("<comtext>",comment["text"], one);
				string += one;
			}
			string += otvet["menu"];
			string += "<div id=\"tolko\">Только зарегистрированные пользователи могут оставлять комментарии</div>";
			$("div#osnova").height("auto");
	$("div#lp").height("auto");
	$("div#rp").height("auto");
			 $("div#comments").html(string);
		kolonki();
		
		},"json");
	
	return false;
	});
	});

function replace_string(search, replace, subject)
{
	if(subject == '' || search == '')
	{
		return subject;
	}
	else
	{
		var parts;
		parts = subject.split(search);
		if(parts.length < 2)
		{
			return parts[0];
		}
		else
		{
			return parts.join(replace);	
		}
	}
} 
function kolonki(){
var hg=0;
if($("div#lp").height()>hg)
	hg=$("div#lp").height();
if(($("div#osnova").height()+52)>hg)
	hg=($("div#osnova").height()+52);
if($("div#rp").height()>hg)
	hg=$("div#rp").height();
$("div#lp").height(hg);
$("div#osnova").height(hg-52);
$("div#rp").height(hg);
}
Ответить с цитированием
  #2 (permalink)  
Старый 07.01.2011, 20:20
Профессор
Отправить личное сообщение для Matre Посмотреть профиль Найти все сообщения от Matre
 
Регистрация: 07.01.2011
Сообщений: 582

используйте one а не click
Ответить с цитированием
  #3 (permalink)  
Старый 07.01.2011, 23:33
Интересующийся
Отправить личное сообщение для Karpo Посмотреть профиль Найти все сообщения от Karpo
 
Регистрация: 27.09.2010
Сообщений: 14

извеняюсь, можно уточнить? я поставил вместо jQuery("a#menu").click(
jQuery("a#menu").one('click',
Но эффект тот же.В чём ошибка?
Ответить с цитированием
  #4 (permalink)  
Старый 10.01.2011, 17:00
Интересующийся
Отправить личное сообщение для Karpo Посмотреть профиль Найти все сообщения от Karpo
 
Регистрация: 27.09.2010
Сообщений: 14

Ничего не получается, всё перепробовал уже

jQuery(document).ready(function() {
	jQuery("a#menu").bind('click',general);
	});

в первый раз обработчик работает нормально.Так как одни ссылки в a#menu обработчик заменяет на другие(точнее удаляет старые a#menu и создаёт новые), то в конце обработчика снова пишу
jQuery("a#menu").bind('click',general);

Но обработчик похоже не цепляется.Что же делать то? =(

Последний раз редактировалось Karpo, 10.01.2011 в 23:59.
Ответить с цитированием
  #5 (permalink)  
Старый 22.01.2011, 18:06
Интересующийся
Отправить личное сообщение для Karpo Посмотреть профиль Найти все сообщения от Karpo
 
Регистрация: 27.09.2010
Сообщений: 14

Так и никто не ответил.Скрипт всё-таки заработал как надо.Вместо рекурсивного вызова bind обошёлся одним единственным вызовом live.Раньше не знал о существовании такового.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выполнить только один раз событие onClick. exBill Events/DOM/Window 3 04.10.2010 23:04
Почему функция срабатывает один раз? Bogdan808 Javascript под браузер 4 06.09.2010 23:41
live click выполняется несколько раз hara jQuery 9 09.06.2010 10:58
Окно открывается только один раз altermann ExtJS 8 22.04.2010 11:55
Чтоб ссылка появлялась один раз для каждого пользователя (по IP или Cookies) Sequoia Общие вопросы Javascript 2 28.01.2010 19:16