Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.03.2009, 01:13
Аспирант
Отправить личное сообщение для grusha Посмотреть профиль Найти все сообщения от grusha
 
Регистрация: 01.03.2009
Сообщений: 55

Как объединить в одну функцию?
Может кто-то подскажет как обединить этот код в один запрос и возможно ли это вообще
Есть такой код:
jQuery('#link_unvote a').click(function(event) {
		
		var href_link = jQuery(this).attr('href');
		var title_link = jQuery(this).attr('title');
		var link_this = this;
		var re = /^(\w+)\(([^)]*)\)$/;
		var found = href_link.match(re);
		var splits = found[2].split(',');
		var el9 = splits[3].replace(/('|")/g,'');
		vote(splits[0], splits[1], splits[2], el9, splits[4], link_this,title_link);
		return false;
});
	
	jQuery('.vote_button').click(function(event) {
										
		var href_link = jQuery(this).attr('href');
		var title_link = jQuery(this).attr('title');
		var link_this = this;
		var re = /^(\w+)\(([^)]*)\)$/;
		var found = href_link.match(re);
		var splits = found[2].split(',');
		var el9 = splits[3].replace(/('|")/g,'');
		vote_news(splits[0], splits[1], splits[2], el9, splits[4], link_this,title_link);
		return false;
		
	
 

  });

 
		
	function vote_news(user, id, htmlid, md5, value, link_this,title_link) {
		
		jQuery.ajax({
			url: "/vote.php",
			data: "id=" + id + "&user=" + user + "&md5=" + md5 + "&value=" + value,
			type:'POST',
			  success: function(aws){
				split = new RegExp ("~--~");
				if (aws.match (split)) {
				b = aws.split (split);
				jQuery(link_this).parent().parent("div").find("#xvotes").html(b[0]).end().find(".vote_img").html("<span class='vote_text_small'>Plus</span>").parents(".stories").find("#linksummaryBury").fadeOut(3000);
				} else {
				errormatch = new RegExp ("^ERROR:");
				aws = aws.substring (6, aws.length);
				jQuery(link_this).parent().parent("div").find(".information_box").show().html(aws).fadeOut(3000);
				}
				
			 },
			 error: function (aws){
			 }
		});
	}
		
	function vote(user, id, htmlid, md5, value, link_this,title_link) {
		
		jQuery.ajax({
			url: "/vote.php",
			data: "id=" + id + "&user=" + user + "&md5=" + md5 + "&value=" + value,
			type:'POST',
			 success: function(aws){
				 
				split = new RegExp ("~--~");
				if (aws.match (split)) {
				b = aws.split (split);
				
				jQuery(link_this).parent().parent("div").find("#linksummaryBury").fadeOut(3000).end().parent().parent("div").find(".vote_img").html("<span class='vote_text_small'>Delete</span>");
				} else {
				errormatch = new RegExp ("^ERROR:");
				aws = aws.substring (6, aws.length);
				jQuery(link_this).parent().parent("div").find(".information_box").show().html(aws).fadeOut(3000);
				}
				 
			
			 },
			 error: function (aws){
			 }
		});
	}


т.е. код идентичен за исключением этих строчек:
jQuery(link_this).parent().parent("div").find("#linksummaryBury").fadeOut(3000).end().parent().parent("div").find(".vote_img").html("<span class='vote_text_small'>Delete</span>");

jQuery(link_this).parent().parent("div").find("#xvotes").html(b[0]).end().find(".vote_img").html("<span class='vote_text_small'>Plus</span>").parents(".stories").find("#linksummaryBury").fadeOut(3000);


Получается из-за двух строчек , так много повторяющегося кода
Ответить с цитированием
  #2 (permalink)  
Старый 06.03.2009, 01:53
Аспирант
Отправить личное сообщение для grusha Посмотреть профиль Найти все сообщения от grusha
 
Регистрация: 01.03.2009
Сообщений: 55

Вобщем сделал так:

jQuery('#link_unvote a, .vote_button').click(function(event) {
		
		var href_link = jQuery(this).attr('href');
		var title_link = jQuery(this).attr('title');
		var link_this = this;
		if(jQuery(this).is('#link_unvote a')){
		var jquery_link = 'jQuery(link_this).parent().parent("div").find("#linksummaryBury").fadeOut(3000).end().parent().parent("div").find(".vote_img").html("<span class=\'vote_text_small\'>Delete</span>")';
	}
	if(jQuery(this).is('.vote_button')){
		var jquery_link = 'jQuery(link_this).parent().parent("div").find("#xvotes").html(b[0]).end().find(".vote_img").html("<span class=\'vote_text_small\'>Plus</span>").parents(".stories").find("#linksummaryBury").fadeOut(3000)';
	} 
		var re = /^(\w+)\(([^)]*)\)$/;
		var found = href_link.match(re);
		var splits = found[2].split(',');
		var el9 = splits[3].replace(/('|")/g,'');
		vote(splits[0], splits[1], splits[2], el9, splits[4], link_this,title_link,jquery_link);
		
		return false;
		
	
 

  });
	function vote(user, id, htmlid, md5, value, link_this,title_link,jquery_link) {
		
		jQuery.ajax({
			url: "/vote.php",
			data: "id=" + id + "&user=" + user + "&md5=" + md5 + "&value=" + value,
			type:'POST',
			 success: function(aws){
				 
				split = new RegExp ("~--~");
				if (aws.match (split)) {
				b = aws.split (split);
				
				eval(jquery_link);
				} else {
				errormatch = new RegExp ("^ERROR:");
				aws = aws.substring (6, aws.length);
				jQuery(link_this).parent().parent("div").find(".information_box").show().html(aws).fadeOut(3000);
				}
				 
			
			 },
			 error: function (aws){
			 }
		});
	}

Незнаю правильно или нет , но работает
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать электронный каталог продукции? natarius Серверные языки и технологии 6 24.05.2009 19:56
Как постоянно запускать одну и туже ссылку? Maxim Общие вопросы Javascript 28 27.02.2009 08:25
Как выполнить функцию с задержкой? AlexMak Events/DOM/Window 6 11.12.2008 10:53
Как сделать функцию типа toDataUrl для рисунка в ie6 ? Олег Общие вопросы Javascript 2 13.09.2008 23:06
Как передать элемент в функцию после createElement Oleg NT Общие вопросы Javascript 3 23.06.2008 01:11