Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.09.2019, 16:11
Интересующийся
Отправить личное сообщение для orange8031 Посмотреть профиль Найти все сообщения от orange8031
 
Регистрация: 05.05.2016
Сообщений: 24

Помощь .filter
Добрый день! Ребята, подскажите пожалуйста как правильно запихнуть в .filter opt

$('.btn').on('click', function () {
	$( "#select option" ).each(function( index ) {
	var opt = ':not([data-value=' + $( this ).val() + ']),';
	$('#select-ul').next().children('ul').children('li').filter(opt).hide();
});
});
Ответить с цитированием
  #2 (permalink)  
Старый 09.09.2019, 16:25
Аватар для SuperZen
Профессор
Отправить личное сообщение для SuperZen Посмотреть профиль Найти все сообщения от SuperZen
 
Регистрация: 08.11.2017
Сообщений: 642

Type: Function( Integer index, Element element ) => Boolean
A function used as a test for each element in the set. this is the current DOM element.

function opt(index, element) {
  return ':not([data-value=' + $( this ).val() + ']),'
}


может быть так, надо проверять.
Ответить с цитированием
  #3 (permalink)  
Старый 09.09.2019, 16:33
Интересующийся
Отправить личное сообщение для orange8031 Посмотреть профиль Найти все сообщения от orange8031
 
Регистрация: 05.05.2016
Сообщений: 24

Не работает, прячет все.
Ответить с цитированием
  #4 (permalink)  
Старый 09.09.2019, 16:43
Аватар для SuperZen
Профессор
Отправить личное сообщение для SuperZen Посмотреть профиль Найти все сообщения от SuperZen
 
Регистрация: 08.11.2017
Сообщений: 642

<html>

<head>
  <script src="https://code.jquery.com/jquery-1.9.1.min.js"></script>
  <script>
    $(document).ready(function () {
      console.log("document loaded");
      $('.select').children('option').filter(`:not([data-value="hide"])`).hide() // missing "" ?
    })
  </script>
</head>

<body>
  <select class="select">
    <option data-value="hide">hide</option>
    <option data-value="show">show</option>
  </select>
</body>

</html>


кто такой $(this).val() ?
Ответить с цитированием
  #5 (permalink)  
Старый 09.09.2019, 16:55
Интересующийся
Отправить личное сообщение для orange8031 Посмотреть профиль Найти все сообщения от orange8031
 
Регистрация: 05.05.2016
Сообщений: 24

нужно в цикле пройти по всем option в select взять их value там есть white, black и тд. есть список который копирует эти опции и добавляет li data-value=white, black и тд. Мне нужно проверить после клика что осталось в этом select и спрятать все li кроме data-value которые совпадают с option value
Ответить с цитированием
  #6 (permalink)  
Старый 09.09.2019, 16:55
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от orange8031
нужно в цикле пройти по всем option в select взять их value там есть white, black и тд. есть список который копирует эти опции и добавляет li data-value=white, black и тд. Мне нужно проверить после клика что осталось в этом select и спрятать все li кроме data-value которые совпадают с option value
orange8031, приведите ваш HTML-код, с которым вы работаете в данном примере.
Ответить с цитированием
  #7 (permalink)  
Старый 09.09.2019, 17:04
Интересующийся
Отправить личное сообщение для orange8031 Посмотреть профиль Найти все сообщения от orange8031
 
Регистрация: 05.05.2016
Сообщений: 24

<div class="value">
							<select id="#select"style="display: none;">
								<option value="">Выбрать опцию</option>
								<option value="white">Белый</option>
								<option value="black">Черный</option>
							</select>
							<div id="select-ul">
								<span class="current">Выбрать опцию</span>
								<ul class="list">
									<li data-value="" class="option selected">Выбрать опцию</li>
									<li data-value="white" class="option">Белый</li>
									<li data-value="black" class="option">Черный</li>
								</ul>
							</div>
						</div>

Последний раз редактировалось orange8031, 09.09.2019 в 17:24.
Ответить с цитированием
  #8 (permalink)  
Старый 09.09.2019, 17:23
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Это действие $( "#select option" ).each(function( index ) было бы справедливо, если бы список был со множественным выбором, а вашем случае это просто $( "#select" ).val().

Дальше нужно просто взять li и отфильтровать, при этом и для этого цикла не нужно.
Ответить с цитированием
  #9 (permalink)  
Старый 09.09.2019, 17:23
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Я так понимаю, что вы хотите выбрать из вашего UL-списка пункт, чтобы остальные, кроме выбранного, скрылись, и выбранное значение записалось в SELECT-список.

<div class="value">
	<select id="#select" style="display: none;">
		<option value="">Выбрать опцию</option>
		<option value="white">Белый</option>
		<option value="black">Черный</option>
	</select>
	<div>
		<span class="current">Выбрать опцию</span>
		<ul class="list">
			<li data-value="" class="option selected">Выбрать опцию</li>
			<li data-value="white" class="option">Белый</li>
			<li data-value="black" class="option">Черный</li>
		</ul>
	</div>
</div>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script>

$("li[data-value]").on("click", function() {
	$("li:not([data-value=" + $(this).data("value") + "])", this.parentNode).hide();
	$("select", $(this).closest(".value")).val($(this).data("value"));
});
	
</script>



orange8031, а вообще зачем вам SELECT, если он всё равно скрыт? Для формы достаточно input[type=hidden]
<div class="value">
	<input type="hidden">
	<div>
		<span class="current">Выбрать опцию</span>
		<ul class="list">
			<li data-value="" class="option selected">Выбрать опцию</li>
			<li data-value="white" class="option">Белый</li>
			<li data-value="black" class="option">Черный</li>
		</ul>
	</div>
</div>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script>

$("li[data-value]").on("click", function() {
	$("li:not([data-value=" + $(this).data("value") + "])", this.parentNode).hide();
	$("input[type=hidden]", $(this).closest(".value")).val($(this).data("value"));
});
	
</script>


orange8031, не пиши <select id="#select" style="display: none;">, пиши <input type="hidden">

Последний раз редактировалось Malleys, 09.09.2019 в 17:28.
Ответить с цитированием
  #10 (permalink)  
Старый 09.09.2019, 17:29
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Malleys,
$("li:not([data-value=" + $(this).data("value") + "])", this.parentNode).hide();

как вариант
$(this).siblings().hide();

Последний раз редактировалось рони, 09.09.2019 в 17:33. Причина: siblings
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Требуется помощь с прошивкой баннеров HTML5 Canvas kambodge Работа 0 08.07.2016 13:55
Бесплатная помощь новичкам iCanary Общие вопросы Javascript 11 30.11.2015 20:35
помощь по jquerry анимации rev27 Элементы интерфейса 6 23.04.2014 03:06
Нужна помощь по javascript darklend Общие вопросы Javascript 0 12.01.2014 23:33
Требуется помощь bboulevard Ваши сайты и скрипты 14 02.12.2013 17:47