Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.09.2014, 23:38
Новичок на форуме
Отправить личное сообщение для maksbaks Посмотреть профиль Найти все сообщения от maksbaks
 
Регистрация: 02.09.2014
Сообщений: 4

Упрощенный способ скрытия похожих чисел
Добрый день.
Стала задача, скрыть определенные числа второй связки первой группы которые совпадают с числами первой связки первой группы и тд.
то есть

Группа1
связка1: 2 10 15
связка2: 2 4 25
Остануться: 4 25

Группа2
связка1: 4 13 1
связка2: 1 8 4
Остануться: 8

и т.д.

html:
<div class="node-tovar">
	<div class="field-name-field-size-m">
		<div class="field-item">21-47</div>
		<div class="field-item">47</div>
	</div>

	<div class="form-item-line-item-fields-field-size-item-und">
		<div class="form-item">20</div>
		<div class="form-item">21</div>
		<div class="form-item" >21-47</div>
		<div class="form-item">47</div>
	</div>
</div>

<div class="node-tovar">
	<div class="field-name-field-size-m">
		<div class="field-item">4</div>
		<div class="field-item">95</div>
	</div>

	<div class="form-item-line-item-fields-field-size-item-und">
		<div class="form-item">3</div>
		<div class="form-item">5</div>
		<div class="form-item" >4</div>
	</div>
</div>


Мое решение(нубское):
function MyFuProducts () {
var colvoTovarov = $('.node-tovar').length - 1;

for (var i = 0; i <= colvoTovarov; i++) {

var RazmerColvo = $('.node-tovar:eq('+i+') .field-name-field-size-m .field-item').length -1;
var RazmerColvoPerem = $('.node-tovar:eq('+i+') .form-item-line-item-fields-field-size-item-und .form-item').length -1;

for (var I = 0; I <= RazmerColvo; I++) {
var TextRazmer = $('.node-tovar:eq('+i+') .field-name-field-size-m .field-item:eq('+I+')').text().replace(/(^\s+|\s+$)/g,'');
var ColvoSimvolov = TextRazmer.length;

for (var Vi = 0; Vi <= RazmerColvoPerem; Vi++) {
var TextRazmerDva = $('.node-tovar:eq('+i+') .form-item-line-item-fields-field-size-item-und .form-item:eq('+Vi+')').text().replace(/(^\s+|\s+$)/g,'');
var ColvoSimvolovDva = TextRazmerDva.length;

if (TextRazmer == TextRazmerDva && ColvoSimvolov == ColvoSimvolovDva) {
$('.node-tovar:eq('+i+') .form-item-line-item-fields-field-size-item-und .form-item:eq('+Vi+')').css('display', 'none');
};
};
};
};
}

MyFuProducts();


решение писал на jquery, это мои первые шаги, прошу сильно не ругать, а подсказать как это дело все можно упростить что бы например при количестве групп около 100 на странице давало меньше нагрузку, так как подозреваю что этот способ будет прилично кушать.

Последний раз редактировалось maksbaks, 03.09.2014 в 00:09.
Ответить с цитированием
  #2 (permalink)  
Старый 03.09.2014, 11:30
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

maksbaks, так по короче будет :
function MyFuProducts(){
	$('.node-tovar').each(function(i,x){
		var v = $('.form-item:visible',x);
		$('.field-item',x).each(function(i,y){
			v.each(function(i,z){
				if ($(y).text() == $(z).text()) $(z).hide();
			});
		});
	});
}
Ответить с цитированием
Ответ



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

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