Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.11.2015, 10:49
Новичок на форуме
Отправить личное сообщение для wordpost Посмотреть профиль Найти все сообщения от wordpost
 
Регистрация: 26.11.2013
Сообщений: 7

функция при клике
$('.mg-item').each(function() {
		$('.sct-clr').each(function() {
			var $SctClr = $(this);
		        $SctClr.on('click', 'li', function() {
		            var $SctClrLi = $(this),
		            	  $TakePrice = $SctClrLi.find('.take-price').html(),
		                  $TakeColor = $SctClrLi.find('.take-color').text(),
		            	  $TakeImg = $SctClrLi.find('.take-img').attr('src');

		            $SctClrLi.parents('.mg-item').find('.put-price').html($TakePrice);
		           $SctClrLi.parents('.mg-item').find('.put-color').text($TakeColor);
		            $SctClrLi.parents('.mg-item').find('.put-img').attr('src', $TakeImg);
		            $SctClrLi.siblings().removeClass('active');
		            $SctClrLi.addClass('active');
		        });
		});
    });

Народ, помогите пожалуйста сообразить функцию при клике
Есть блок .mg-item их много, в этом блоке есть еще один блок .sct-clr
В котором есть список для клика, при клике в основном блоке должно меняться цена,цвет и картинка из списка в блоке .sct-clr.
Вот как сообразить функцию из
var $SctClrLi = $(this),
 $TakePrice = $SctClrLi.find('.take-price').html(),
$TakeColor = $SctClrLi.find('.take-color').text(),
$TakeImg = $SctClrLi.find('.take-img').attr('src');
...
Ответить с цитированием
  #2 (permalink)  
Старый 28.11.2015, 13:01
Профессор
Отправить личное сообщение для Mess4me Посмотреть профиль Найти все сообщения от Mess4me
 
Регистрация: 03.11.2014
Сообщений: 263

wordpost,
может взять так ?
var $SctClrLi = $(this),
$TakePrice = $SctClrLi.find('.take-price')[0].html(),
$TakeColor = $SctClrLi.find('.take-color')[0].text(),
$TakeImg = $SctClrLi.find('.take-img')[0].attr('src');

а дальше уже делать с ними что надо.
Ответить с цитированием
  #3 (permalink)  
Старый 28.11.2015, 17:41
Аватар для Sigizmund2012
Профессор
Отправить личное сообщение для Sigizmund2012 Посмотреть профиль Найти все сообщения от Sigizmund2012
 
Регистрация: 16.07.2014
Сообщений: 267

Сообщение от Mess4me Посмотреть сообщение
wordpost,
может взять так ?
var $SctClrLi = $(this),
$TakePrice = $SctClrLi.find('.take-price')[0].html(),
$TakeColor = $SctClrLi.find('.take-color')[0].text(),
$TakeImg = $SctClrLi.find('.take-img')[0].attr('src');

а дальше уже делать с ними что надо.
Так не прокатит, $TakePrice = $SctClrLi.find('.take-price')[0] получит именно элемент, а не коллекцию jQuery, поэтому вызов метода html() выдаст ошибку 'is not a function'. То же самое и с остальными строками.
Ответить с цитированием
  #4 (permalink)  
Старый 28.11.2015, 21:11
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

Сообщение от Mess4me
attr('src')
Плохая практика. Лучше использовать prop.

//attr:
elem.getAttribute('src');

//prop:
elem.src;


Ну и раз уж обращаешься напрямую к элементам, то сразу использовать src/textContent/innerHTML, иначе выдаст ошибку, так как это уже сама нода, а не объект jQuery.

Последний раз редактировалось ruslan_mart, 28.11.2015 в 21:13.
Ответить с цитированием
  #5 (permalink)  
Старый 29.11.2015, 13:38
Новичок на форуме
Отправить личное сообщение для wordpost Посмотреть профиль Найти все сообщения от wordpost
 
Регистрация: 26.11.2013
Сообщений: 7

Хотелось что то типа такого:
$('.sct-clr').each(function() {
		var $SctClr = $(this);
	        $SctClr.on('click', 'li', function() {
	        	clickLi();
	});
	var clickLi = function (argument) {
	      var $SctClrLi = $(this),
	      	  $TakePrice = $SctClrLi.find('.take-price').html(),
	            $TakeColor = $SctClrLi.find('.take-color').text(),
	      	  $TakeImg = $SctClrLi.find('.take-img').attr('src');

	      $SctClrLi.parents('.mg-item').find('.put-price').html($TakePrice);
	     $SctClrLi.parents('.mg-item').find('.put-color').text($TakeColor);
	      $SctClrLi.parents('.mg-item').find('.put-img').attr('src', $TakeImg);
	      $SctClrLi.siblings().removeClass('active');
	      $SctClrLi.addClass('active');
	  });
	});
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Увеличение картинки при клике - самый простой способ Lagshmivar Firefox/Mozilla 16 23.02.2017 17:03
Смена фона картинки при клике на иконку Letto Элементы интерфейса 2 08.11.2013 18:31
Изменить цвет при клике AndreyS jQuery 3 07.10.2012 16:27
Изменение фона элемента при клике. psydo Элементы интерфейса 8 28.06.2012 23:53
Смена id при клике Nestor Общие вопросы Javascript 6 04.03.2009 19:10