Могу ли я объединить сортировку Jquery шаблона архива по событиям на странице, чтобы они не сбрасывали друг друга? - PullRequest
0 голосов
/ 27 февраля 2012

Я использую Jquery, чтобы позволить посетителям изменять порядок запросов и количество страниц на странице архива.Панель вверху списка архива выглядит следующим образом:

сортировка по title/date/poularity см. На странице 'all/20' (и, если применимо, отображениенумерация страниц).

полная рабочая функция и тег шаблона, который у меня пока есть: pastebin

Все это прекрасно работает, НО в настоящее время два события сбрасываются каждыйдругое - это означает, что я могу изменить сумму или я могу изменить порядок, но у меня не может быть одновременной работы по сортировке и сортировке.Я собираюсь усложнить с этим?Есть ли более простой способ объединить их?

$('.amt-button').click(function(){
    var a_str = $(this).text();
window.location.href = "?a="+a_str;
    $(this).addClass("highlight");
});

$('.sorter-dropdown').change(function(){
var o_str = $(this).val();
window.location.href = "?o="+o_str; 
$(this).addClass("highlight");
});

Как вы можете видеть выше, их вызывают из-за различных событий - нажатие кнопки и выбор изменения - но мне было интересно, смогу ли я как-нибудь получить значение'a' или 'o', если он уже был установлен и вызван в другом событии, так что они оба могут быть применены?

Также подсветка класса сбрасывается после того, как событие перезагружает запрос, что делает его также бесполезным - потому что я хотел визуально выделить «текущую» кнопку / параметры сортировки и изменения для пользователя.Есть ли способ заставить класс подсветки быть примененным после того, как новый запрос перезагрузит страницу?

Спасибо за любые идеи!

Ответы [ 2 ]

0 голосов
/ 28 февраля 2012

Я снова ответил на свой вопрос (часть 2 о том, как сделать так, чтобы у кнопок и опций был текущий класс). Я полагаю, что они оба были достаточно связаны, чтобы быть в одном вопросе, потому что они оба были о том, как получить значения var в URL для использования. они в той же общей функции - но это был мой первый пост на этом сайте - так что, возможно, я неправильно понял. Что я наконец-то выяснил:

$(".amt-button").addClass(function(index) {
var addedClass;
var amt_current = $.getUrlVar('amt_per');
var amt_val = $(this).val();
if ( amt_val  == amt_current ) {
  addedClass = "current";
}
return addedClass;
});

Объяснение: функция addclass вызывает кнопки с классом amt-button - и, если их значение равно значению var, извлеченному из URL-адреса, класс 'current' добавляется к рассматриваемой кнопке 'current'. Хорошо для контроля того, как кнопки отображаются для пользователя. надеюсь, это поможет кому-то, если они будут бороться с этим, как я.

0 голосов
/ 28 февраля 2012

Я ответил на часть 1 моего первоначального вопроса (как сделать так, чтобы два события не отменяли друг друга). Это включало получение и удаление переменной из URL-адреса, которую я затем использовал с помощью оператора if else, чтобы сказатьесли оно не определено, используйте значение по умолчанию в адресе, и если оно уже было установлено в URL, передайте это значение.

Вот так выглядит «панель сортировки» (и она работает!): как выглядит панель сортировки

Полная функция (все еще немного грязно) Вставить полный код корзины

У меня все еще проблемы с применением класса выделения для текущих кнопок / опций.Моя логика до сих пор состоит в том, чтобы создать функцию, которая запускается с загрузкой окна и извлекает переменную из URL-адреса, а затем проверяет, есть ли кнопка с таким же значением, и, если это так, применяет класс к этой указанной кнопке.Однако я думаю, что мне не хватает некоторых ключевых моментов, чтобы попасть туда:

`// trying to make highlight style carry over. 
$(window).load(function(){
    // get the amt per value from url set it as amt_highlight var
    var amt_highlight = $.getUrlVar('amt_per');
    // if a button with class.amount-buttons value is equal to amt_highlight
    if ( $('.amt-button').val(); == amt_highlight){
    // then add class to that button
    $(this).addClass("highlight");
    }       
});`

Есть ли у кого-нибудь какие-либо идеи о том, что мне не хватает?

...