[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: не работает слайдер
шура2222
Всем доброго дня!

делаю фильтр ползунками по свойствам товара

вот код HTML


<div class="filter_group">
{* Feture range *}
<input class="min_input" id="fn_features_slider_id" name="featuresfilter[id]" value="{$f->id}" data-features="{$f->id}" type="text">

<div
class="features_range">
<div
class="features_label">
<input
class="min_input" id="fn_features_slider_min" name="featuresfilter[min]" value="{($prices->current->min|default:$prices->range->min)|escape}" data-features="{$prices->range->min}" type="text">
</div>

<div
class="features_label max_price">
<input
class="max_input" id="fn_features_slider_max" name="featuresfilter[max]" value="{($prices->current->max|default:$prices->range->max)|escape}" data-features="{$prices->range->max}" type="text">
</div>
</div>


{* Features slider *}
<div id="fn_slider_features"></div>

</div>



а вот js


/* Аяксовый фильтр по характеристикам */
if( $( '#fn_slider_features' ).size() ) {
var features_slider_all = $( '#fn_features_slider_min, #fn_features_slider_max' ),
features_slider_min = $( '#fn_features_slider_min' ),
features_slider_max = $( '#fn_features_slider_max' ),
features_slider_id = $( '#fn_features_slider_id' ),
features_current_min = features_slider_min.val(),
features_current_max = features_slider_max.val(),

features_range_min = features_slider_min.data( 'featuresfilter' ),
features_range_max = features_slider_max.data( 'featuresfilter' ),

link = window.location.href.replace( /\/page-(\d{1,5})/, '' ),
features_ajax_slider = function() {
$.ajax( {
url: link,
data: {
ajax: 1,
'featuresfilter[min]': features_slider_min.val(),
'featuresfilter[max]': features_slider_max.val(),
'featuresfilter[id]': features_slider_id.val()
},
dataType: 'json',
success: function(data) {
$( '#fn_products_content' ).html( data.products_content );
$( '.fn_pagination' ).html( data.products_pagination );
$('.fn_products_sort').html(data.products_sort);

$('.fn_features_ajax_wait').remove();
}
}
);
};
link = link.replace(/\/sort-([a-zA-Z_]+)/, '');

$( '#fn_slider_features' ).slider( {
range: true,
min: features_range_min,
max: features_range_max,
values: [features_current_min, features_current_max],
slide: function(event, uif) {
features_slider_min.val( uif.values[0] );
features_slider_max.val( uif.values[1] );
},
stop: function(event, uif) {
features_slider_min.val( uif.values[0] );
features_slider_max.val( uif.values[1] );
$('.fn_categories').append('<div class="fn_features_ajax_wait"></div>');
features_ajax_slider();
}
}
);

features_slider_all.on( 'change', function() {
$( "#fn_slider_features" ).slider( 'option', 'values', [features_slider_min.val(), features_slider_max.val()] );
features_ajax_slider();
} );

// Если после фильтрации у нас осталось товаров на несколько страниц, то постраничную навигацию мы тоже проведем с помощью ajax чтоб не сбить фильтр по цене
$( document ).on( 'click', '.fn_features_ajax_wait a', function(e) {
e.preventDefault();
$('.fn_categories').append('<div class="fn_features_ajax_wait"></div>');
var link = $(this).attr( 'href' ),
send_min = $("#fn_features_slider_min").val();
send_max = $("#fn_features_slider_max").val();
$.ajax( {
url: link,
data: { ajax: 1, 'featuresfilter[min]': send_min, 'featuresfilter[max]': send_max },
dataType: 'json',
success: function(data) {
$( '#fn_products_content' ).html( data.products_content );
$( '.fn_pagination' ).html( data.products_pagination );
$('#fn_products_sort').html(data.products_sort);

$('.fn_features_ajax_wait').remove();
}
}
);
} );
}


а это код 1 обработчика

$feat = array();
$feat['current'] = $this->request->get('featuresfilter');
if (isset($feat['current']['min']) && isset($feat['current']['max']) && $feat['current']['max'] != '' && $feat['current']['min'] != '') {
$filter['featuresfilter'] = $feat['current'];
} else {
unset($feat['current']);
}


и второго обработчика


if(isset($filter['featuresfilter'])) {
if(isset($filter['featuresfilter']['min'])) {

if($filter['featuresfilter']['min']>0) {
$features_range_filter .= $this->db->placehold('AND p.id in (SELECT product_id FROM __options WHERE feature_id=? AND floor(value)>= ?) ', $filter['featuresfilter']['id'], $this->db->escape(trim($filter['featuresfilter']['min'])));

$features_range_filter .= $this->db->placehold('AND p.id in (SELECT product_id FROM __options WHERE feature_id=? AND floor(value)<= ? ) ', $filter['featuresfilter']['id'], $this->db->escape(trim($filter['featuresfilter']['max'])));

}
}
}


далее здесь помещаю в основной запрос в таблицу P


смысл в том что если свойство одно то все хорошо фильтрует а вот если свойств несколько то слайдер ползунков остается только на первом свойстве а у всех остальнух его нет (

помогите размножить его

<div id="fn_slider_features"></div> в этом класе выводится фильтр НО когда их несколько то выводится только первый

я понимаю что нужно передавать разные класы или как то еще можно сделать я могу например сделать так

<div id="fn_slider_features_{$f->id}"></div> таким образом на каждое свойство будет свой собственный класс НО как его обработать в js?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.