Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Упрощенный способ скрытия похожих чисел (https://javascript.ru/forum/jquery/49909-uproshhennyjj-sposob-skrytiya-pokhozhikh-chisel.html)

maksbaks 02.09.2014 23:46

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

Группа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 на странице давало меньше нагрузку, так как подозреваю что этот способ будет прилично кушать.:cray: :(

ksa 03.09.2014 08:47

Цитата:

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

Как вариант...

<!DOCTYPE html>
<html>
<head>
<script src='http://code.jquery.com/jquery-latest.js'></script>
<!--
<link rel='stylesheet type=text/css href=tmp.css' />
-->
<style type='text/css'>
.off {
	display: none;
}
.node-tovar {
	border: 1px solid;
}
.field-name-field-size-m {
	border: 1px solid red;
}
</style>
<script type='text/javascript'>
$(function (){
	$('button').click(function (){
		$('.field-item').each(function (){
			var val=this.innerHTML;
			$(this).parent().next().find('.form-item:contains('+val+')').hide();
		});
	});
});
</script>
</head>
<body>
<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>
<button>Close</button>
</body>
</html>


Часовой пояс GMT +3, время: 08:58.