Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.08.2014, 13:18
Интересующийся
Отправить личное сообщение для MasterDmx Посмотреть профиль Найти все сообщения от MasterDmx
 
Регистрация: 16.02.2013
Сообщений: 21

Добавление класса определенному элементу jQuery
Есть вот такой код:

<div class="chosen-container">
<a class="chosen-single">
<span>Указать</span>
</a>
<div class="chosen-drop">
<ul class="chosen-results">
<li class="active-result">пункт 1</li>
<li class="active-result">пункт 2</li>
<li class="active-result">пункт 3</li>
<li class="active-result">пункт 4</li>
</ul>
</div>
</div>


Таких вот кусков очень много. Это что-то типо select тегов, точнее они и есть (chosen скрипт)

Задача была такой:
1) Если по классу "active-result" был клик, то ему же присваивается еще один класс "activ_click"
2) Потом идет проверка, если у элемента есть класс "activ_click", то классу "chosen-single" присваивается класс "in_compl", а если нет, то класс "in_disabl".

Вообщем это что-то типо проверки на заполненность поля, если поле было заполнено, то он выделится зеленым (класс "in_compl") если нет, то красным (класс "in_disabl")

Все бы хорошо, то вот если к примеру у одного поля пользователь кликнул по одному из пунктов (по классу "active-result"), то потом класс "in_compl" добавляется вообще ко всем полям. Т.е. ко всем "chosen-single" которые есть на странице. А нужно что бы именно к тому, в котором был клик.

Вот часть кода:

$('.active-result').live("click", function() {
     $(this).addClass('activ_click');
});  

$('.butt_panel.se2 .butt_next').click(function() {

	$('.chosen-single').each(function() {
		if ( $(".active-result").hasClass("activ_click") ) {
	            $(this).removeClass('in_disabl');
	            $(this).addClass('in_compl');
		} else {
		    $(this).addClass('in_disabl');
		}
	});  
});


Вижу, что он будет применен ко всем элементам "chosen-single". Но не знаю как и что добавить, прошу вашей помощи. Если можно на примерах.

Надеюсь не запутаетесь, а то чтот загнул тут с классами)
Ответить с цитированием
  #2 (permalink)  
Старый 26.08.2014, 14:09
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

Сообщение от MasterDmx
Все бы хорошо, то вот если к примеру у одного поля пользователь кликнул по одному из пунктов (по классу "active-result"), то потом класс "in_compl" добавляется вообще ко всем полям. Т.е. ко всем "chosen-single" которые есть на странице. А нужно что бы именно к тому, в котором был клик.
А ты используй свою структуру элементов. Т.е. действуй через "родителей" и "детей"...
Ответить с цитированием
  #3 (permalink)  
Старый 26.08.2014, 14:26
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

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

<!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'>
.activ_click {
	color: red;
}
.in_compl {
	background-color: yellow;
}
</style>
<script type='text/javascript'>
$(function (){
	$('.active-result').click(function (){
		$(this).toggleClass('activ_click');
		var ob=$(this).parents('.chosen-container');
		var o=ob.find('.chosen-single');
		if (ob.find('.active-result').hasClass('activ_click')) {
			o.addClass('in_compl');
		} else {
			o.removeClass('in_compl');
		};
	});
});
</script>
</head>
<body>
<div class="chosen-container">
	<a class="chosen-single">
		<span>Указать</span>
	</a>
	<div class="chosen-drop">
		<ul class="chosen-results">
			<li class="active-result">пункт 1</li>
			<li class="active-result">пункт 2</li>
			<li class="active-result">пункт 3</li>
			<li class="active-result">пункт 4</li>
		</ul>
	</div>
</div>
<div class="chosen-container">
	<a class="chosen-single">
		<span>Указать</span>
	</a>
	<div class="chosen-drop">
		<ul class="chosen-results">
			<li class="active-result">пункт 1</li>
			<li class="active-result">пункт 2</li>
			<li class="active-result">пункт 3</li>
			<li class="active-result">пункт 4</li>
		</ul>
	</div>
</div>
</body>
</html>
Ответить с цитированием
Ответ


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавление класса элементу при прокрутке к этому элементу patriot94 Общие вопросы Javascript 5 18.03.2014 12:41
Как добраться через jquery к элементу? literator Events/DOM/Window 3 25.12.2013 21:45
jquery не замечает смены класса у элемента artygrand jQuery 4 16.12.2012 08:48
Задержка после присвоения класса в jQuery surzhikov jQuery 1 05.10.2011 03:29
jquery. Добавление атрибута к элементу Akimserg jQuery 7 06.04.2011 18:33