Сообщение от гуня
|
задача сделать так чтобы не мигало
|
Пост №7
Вот упрощенно ваша структура
<div id="page">
<form>
<select></select>
</form>
<div class="row"></row>
</div>
Когда вы выбираете что-то в select, у вас происходит скачивание HTML-кода, который затем вставляется в элемент <div id="page">. Как видите, у вас происходит замена всего содержимого (включая форму с открытым <select>) на новое содержимое. (поэтому иногда подмигивает! у меня едва подмигивает 1 раз на 5 просмотров, это не так критично, в принципе здесь можно ничего не менять!)
Но всё-же вы можете
не обновлять форму!
Тогда надо поменять структуру HTML на такую...
<div>
<form>
<select></select>
</form>
<div class="row" id="page"></row>
</div>
Обратите внимание, как я перенёс атрибут id! Тогда оно не мигает, поскольку не заменяется форма, но тогда нужно немного поправить ответ от сервера! (отрисовывать форму на сервере не надо, тогда!)
Сообщение от гуня
|
спасибо попробую
я еще пытался делать вызов
setinterval ({$('div.' + cssClass + ' .multiselect').parent().find('ul').show();}, 1);
но все равно мигание иногда проскакивает
|
UPD
Сообщение от гуня
|
не помогло
перенес id page но форма все равно сбрасывается
если что на тесте обновил
|
надо было сверху убрать id="page" и добавить вниз
а вы зачем-то и наверху оставили id="page" и вниз добавили id="page1"
у вас получилось так
<div id="page">
<form>
<select></select>
</form>
<div class="row" id="page1"></row>
</div>
а надо так
<div>
<form>
<select></select>
</form>
<div class="row" id="page"></row>
</div>
Читайте, что я пишу!!!
Сообщение от гуня
|
читал
я поменял в скрипте код обновления
new Pjax({
elements: 'a[ajaxLink], li.page a, div.sorter a, form',
selectors: ['#page1'],
scrollTo: false,
cacheBust: false
});
|
UPD
А в тесте до сих пор показывает (в category.js строки 48-53)
new Pjax({
elements: 'a[ajaxLink], li.page a, div.sorter a, form',
selectors: ['#page'],
scrollTo: false,
cacheBust: false
});
UPD
Теперь передвинулось на строки 65-70, но всё-равно тот же текст
UPD
Сообщение от гуня
|
сделал как описано в 7 посте
теперь page перенесено
не помогло
|
помогло!
Проще говоря, раскомментируйте 49 строчку в category.js
у вас в category.js строки 28-53 выглядит так
$(document).on('change', '#goods-filter :input, #goods-filter [type=hidden]', function() {
/*interval = setInterval(function () {
//$('div.' + cssClass + ' .multiselect').parent().find('ul').show();
//cssClass = '';
if (cssClass.length > 0) {
console.log('setInterval');
$('div.' + cssClass + ' .multiselect').parent().find('ul').show();
}
if (cssClass.length == 0) {
clearInterval(interval);
}
}, 1);*/
$('#goods-filter :submit').click();
if (cssClass.length > 0) {
//$('div.' + cssClass + ' .multiselect').parent().find('ul').show();
}
});
а надо так
$(document).on('change', '#goods-filter :input, #goods-filter [type=hidden]', function() {
/*interval = setInterval(function () {
//$('div.' + cssClass + ' .multiselect').parent().find('ul').show();
//cssClass = '';
if (cssClass.length > 0) {
console.log('setInterval');
$('div.' + cssClass + ' .multiselect').parent().find('ul').show();
}
if (cssClass.length == 0) {
clearInterval(interval);
}
}, 1);*/
$('#goods-filter :submit').click();
if (cssClass.length > 0) {
*!*
$('div.' + cssClass + ' .multiselect').parent().find('ul').show();
*/!*
}
});
или лучше так (если закомментированное не нужно!) а надо так
$(document).on('change', '#goods-filter :input, #goods-filter [type=hidden]', function() {
$('#goods-filter :submit').click();
if (cssClass.length > 0) {
$('div.' + cssClass + ' .multiselect').parent().find('ul').show();
}
});
UPD
Сообщение от гуня
|
при первой загрузке чекбоксы схлопываются
|
я не понял, что это значит, но если раскомментировать 49 строчку то всё работает без мигания и сворачивания
Сообщение от гуня
|
надо загрузить новую вкладку без параметров и выбрать чекбокс
|
Ах, да! Заметил! То, что у вас в category.js на 55-57 строчках перенесите на 27
$(document).on('change', ':checkbox', function() {
cssClass = $(this).closest('div.col-xs-3').data('css');
});
то, что у вас на 55-57 строчках перенесите на 27 (у вас она до сих не перенесена)