ApachaiReact
@ApachaiReact

Есть ли хорошие конверторы из jquery в js?

Добрый день дорогие пользователи! Есть ли вообще адекватные конверторы из jquery в js? Уже который раз пытаюсь переписать одну функцию, вот она сама:
function createLines(){
			$('div#related-result').show(0)
			console.log('createLines')
			var nodes = $('.node').not('.ignore'); 
			nodes.find('div').remove()
			var from_parent = $('<div class="from-parent"></div>');
			var to_child = $('<div class="to-child"></div>');
			var line = $('<div class="gor-line"></div>');
			var tree_par = $('.tree-root'); 
			
			nodes.each(function(){
				el = $(this);
				
					id = $(this).data('id');
					
					childs = $('.parent'+id, tree_par); 

					if (childs.length > 0){
						$(this).append(from_parent.clone().addClass('with_short_bottom'));
					}
					
					if (!el.hasClass('spouce-item')){
						if (el.next().length > 0){
							if (el.next().hasClass('spouce-item')){
								el.find('.from-parent').addClass('left100')
							}
						}
					}else{
						if (el.prev().find('.from-parent').length > 0){
							el.find('.from-parent').addClass('left-100')
						}
					}
					pl = $('.from-parent', el).offset().left;	
						childs.each(function(){
							tc = to_child.clone()
							$(this).append(tc);
							cl = $('.to-child', $(this)).offset().left;

							if (pl == cl || (cl <= pl+1 && cl>=pl-1) || (pl <= cl+1 && pl>=cl-1) || (pl+(el.outerWidth()/2) == cl)){
								tc.addClass('with_high_top');
							}else if (pl > cl){
								w = pl-cl-11; 
								if (el.next().hasClass('spouce-item')){
									//w+=el.width()/2;
								}
								tc.addClass('with_right_round_top');
								$(this).append(line.clone().addClass('with_right_top_round').width(w));
							}else if (pl < cl){
								w = cl-pl; 
								if (el.next().hasClass('spouce-item')){
									w-=10;
								}else{ 
									w-=11
								}
								tc.addClass('with_left_round_top');
								$(this).append(line.clone().addClass('with_left_top_round').width(w));
							}

							if ($(this).find('.gor-line').length > 0){
								gl = $(this).find('.gor-line')
								fp = el.find('.from-parent')
								
								if (gl.width() < 1){
									if (gl.offset().left != fp.offset().left){
										gl.css('right', 41-Math.abs(gl.offset().left - fp.offset().left))
									}
								}
							}
						});
				
			});
		
		}

Но вылазит то один баг, то другой. Уже нервишки здают...
  • Вопрос задан
  • 144 просмотра
Решения вопроса 1
mizutsune
@mizutsune
Simplicity is the ultimate sophistication.
Есть такая штука - replace-jquery, которая в той или иной степени может помочь в некоторых случаях, но это не 100-процентный конвертер или что-то в этом духе.

Вообще самым лучшим способом будет ручное переписывание кода. Статей описывающих как и чем заменить методы Jquery , достаточно чтобы справиться со столь "сложной" задачей. Да, количество кода на нативном JS будет больше и ручная "конвертация" займёт время, но это не столь критично. Я бы сказал бы что будет даже полезно, но это смотря с какой стороны смотреть на это всё.

ИМХО, но в большинстве случаев, разгребать тонну кода, ради простого функционала, бессмысленно, ведь можно написать всё с нуля, возможно даже лучше... просто нужно понять, что нужно сделать и какой результат ожидается.

Но вылазит то один баг, то другой. Уже нервишки здают...


У вас очень маленький объём кода, но качество конечно оставляет желать лучшего. Попробуйте разбить код на мелкие функции, проверьте на работоспособность, после чего переписывайте на нативный JS. Таким образом вам будет проще решить эту задачу. Тут работы на пару часиков...

Есть ли хорошие конвертеры из jquery в js?


Нет и не будет, потому что JQuery это всего лишь библиотека написанная на JS, а не какой-то там инопланетный артефакт.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@alexalexes
В вашем случае лучший конвертер - компетентный программист.
Ответ написан
Комментировать
@TheAndrey7
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
27 нояб. 2022, в 21:38
25000 руб./за проект
27 нояб. 2022, в 20:02
3000 руб./за проект
27 нояб. 2022, в 18:52
6500 руб./за проект