Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   При клике на кнопку переход к якорю и открытие блока (https://javascript.ru/forum/dom-window/60086-pri-klike-na-knopku-perekhod-k-yakoryu-i-otkrytie-bloka.html)

рони 10.12.2015 17:54

Galyanov,
так замените slideToggle на show

рони 10.12.2015 17:56

Galyanov,
$('.selection').show()[0].scrollIntoView();

это добавьте в скрипт сортировки и выкиньте скрипт с кликом

Galyanov 10.12.2015 19:48

Если выкинуть скрипт с кликом то по какому событию будет срабатывать?

сделал так:
<script>
$('.selection').hide();

    event.preventDefault();
    $('.selection').show()[0].scrollIntoView();
  }); 
</script>


Блок не скрывает, вниз не опускает...
Как и без скрипта совсем.

рони 10.12.2015 19:56

Galyanov,
Цитата:

Сообщение от рони
это добавьте в скрипт сортировки и выкиньте скрипт с кликом


Galyanov 10.12.2015 20:04

Сортировка у меня на php
function go_filter() { // наша функция
	$args = array(); // подготовим массив 
	$args['meta_query'] = array('relation' => 'AND'); // отношение между условиями, у нас это "И то И это", можно ИЛИ(OR)
	global $wp_query; // нужно заглобалить текущую выборку постов

	if (!empty($_GET['space'])) { // если передан массив с фильтром по комнатам
		$args['meta_query'][] = array( // пешем условия в meta_query
			'key' => 'space_num', // название произвольного поля
			'value' => $_GET['space'], // переданное значения, $_GET['rooms'] содержит массив со значениями отмеченных чекбоксов
			'type' => 'numeric', // тип поля - число
			'compare' => 'IN' // тип сравнения IN, т.е. значения поля комнат должно быть одним из значений элементов массива
			);
	}
    
    if (!empty($_GET['inverter'])) { // если передан массив с фильтром по комнатам
		$args['meta_query'][] = array( // пешем условия в meta_query
			'key' => 'inverter_num', // название произвольного поля
			'value' => $_GET['inverter'], // переданное значения, $_GET['rooms'] содержит массив со значениями отмеченных чекбоксов
			'type' => 'numeric', // тип поля - число
			'compare' => 'IN' // тип сравнения IN, т.е. значения поля комнат должно быть одним из значений элементов массива
			);
	}
    
    if (!empty($_GET['made'])) { // если передан массив с фильтром по комнатам
		$args['meta_query'][] = array( // пешем условия в meta_query
			'key' => 'made', // название произвольного поля
			'value' => $_GET['made'], // переданное значения, $_GET['rooms'] содержит массив со значениями отмеченных чекбоксов
			'type' => 'numeric', // тип поля - число
			'compare' => 'IN' // тип сравнения IN, т.е. значения поля комнат должно быть одним из значений элементов массива
			);
	}

	
			
	query_posts(array_merge($args,$wp_query->query)); // сшиваем текущие условия выборки стандартного цикла wp с новым массивом переданным из формы и фильтруем
}

рони 10.12.2015 20:22

Galyanov,
если сортировка происходит на сервере то перемещение к отсортированному блоку по клику ... как то мало совместимы ... нафига тогда грузить неотсортированную таблицу?

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

Galyanov 10.12.2015 20:26

У меня все это происходит на одной странице. Одностраничный сайт.
И показывать все записи мне не надо, а только отсортированный результат...

рони 10.12.2015 20:40

Galyanov,
первоначально грузить блок с неотсортированной таблицей нет смысла в вашем случае -- грузите блок когда отсортируите ... нет блока не скрола к блоку , есть блок и есть скрол к блоку. всё мне больше добавить нечего.
вам к php специалисту.

Galyanov 10.12.2015 21:04

Но в принципе можно сделать блок с нулевой высотой к которому будет скролить.

Galyanov 11.12.2015 21:12

В общем сделал по другому.
При передаче данных из формы результаты выборки подгружаю из php файла, в которм стоит скрипт
<script>
$(window).load(function(){

$(window).scrollTop(1250);
	});
</script>

В итоге появляются данные и страница скролится сразу к результатам.


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