#javascript #jquery #ajax
#javascript #jquery #ajax
Вопрос:
В настоящее время я пытаюсь создать функцию поиска фильтра, используя jQuery и Ajax. Фильтр можно увидеть на:
http://www.danfarrellwright.com/screwsline/front_end/product.php?product_id=104
Когда страница загрузится, наведите указатель мыши на таблицу, и вы увидите, что текущая ячейка меняет цвет. Теперь используйте либо фильтр длины, либо калибровочный фильтр для уменьшения результатов, когда ajax завершен, функция наведения на таблицу больше не работает. Помощь была бы оценена!
Вот функция, которая изменяет цвета ячеек таблицы:
$('table')
.delegate('.price_cell', 'mouseenter', function() {
if ($(this).index() > 0) {
$(this).css('background-color','#cce6ff');
$('td:lt(1)', $(this).parents('tr')).css({'background-color':'#0096E1','color':'#ffffff'});
}
})
.delegate('.price_cell', 'mouseleave', function() {
if ($(this).index() > 0) {
$(this).css('background-color','#ffffff');
$('td:lt(1)', $(this).parents('tr')).css({'background-color':'#ffffff','color':'#002436'});
}
});
И вот функция для слайдера и Ajax:
$( "#lengthSlider" ).slider({
range: true,
min: lengthMin,
max: lengthMax,
step: 5,
values: [ lengthMin, lengthMax ],
slide: function( mouseleave, ui ) {
$(this).siblings('input[class^="low"]').val(ui.values[ 0 ]);
$(this).siblings('input[class^="high"]').val(ui.values[ 1 ]);
$('#tableHolder').html('<img src="' base 'images/ajax-loader.gif" alt="ajax-loader" />amp;nbsp;Screwsline powered by Webformed');
$('#tableHolder').load(document.URL ' #tableHolder', {
'lengthMinFil':ui.values[ 0 ],
'lengthMaxFil':ui.values[ 1 ]
});
}
});
Комментарии:
1. пробовал использовать . жить вместо делегирования?
2. Да, JavaScript, я где-то писал Java?
3. Извините, я виноват! Спасибо за предложения ref live, попробую это вместо делегирования.
Ответ №1:
Ваш делегат находится в $ (‘table’), который находится внутри $ (‘#tableHolder’), что означает, что он заменяется при выполнении ajax-вызова, поэтому вы теряете свой делегат.
Ответ №2:
Вы загружаете новую таблицу. Вам нужно будет повторно привязать вашу функцию к этой новой таблице. Поскольку это таблица, отличная от той, которая была привязана при загрузке страницы (когда delegate()
был вызван).
или
Вы могли бы использовать live()
функцию jQuery.