Добавить вторую функцию к этому jquery? - PullRequest
1 голос
/ 24 декабря 2011

Следующая функция jQuery фильтрует столбцы моей таблицы по буквам. Для каждой буквы есть <a>. Я не уверен, как добавить еще одну функцию для фильтрации столбца 1, используя другой раскрывающийся список на стороне HTML.

JavaScript:

function fil(rexp)
{
    $('#tablestyle').dataTable().fnFilter(rexp, 0, true, false);
}

HTML:

<div style="float:left;" class="sortalpha">
    <a href="javascript:fil('');">ALL</a>
    | <a href="javascript:fil2('^a');">A</a>
    | <a href="javascript:fil('^b');">B</a>
    <!-- [...] -->
    | <a href="javascript:fil('^z');">Z</a>
</div>

Я попытался скопировать верхнюю часть и изменить fil на fil2, затем скопировать HTML-часть и изменить на fil2. Это правильный путь?

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~

Просто, чтобы дать всем немного больше информации, я использую datatables {www.datatables.net}, который представляет собой скрипт jquery, который представляет таблицы в симпатичном пользовательском интерфейсе с различными функциями, такими как поиск, фильтрация записей на странице и т. Д. , Я реализовал этот мод, который кто-то перечислил здесь >> http://www.datatables.net/forums/discussion/6641/filtering-with-first-letter/p1

Работает нормально, и когда я выбираю каждую букву, она фильтрует столбец 0, используя любую букву, на которую нажала. То, что я пытаюсь сделать, это иметь два разных фильтра, один для фильтрации столбца 0, который является именем человека, а также другой фильтр, который точно выполняет то же самое, но для столбца 1, который является названием компании, я просто не был уверен, как добавить один и тот же кусок кода дважды?

Ответы [ 2 ]

1 голос
/ 24 декабря 2011

Я действительно не знаю вашего контекста, но я бы посоветовал вам попробовать обработчики событий вместо URL-адресов JavaScript.

Итак, вместо этого:

<a href="javascript:fil('');">ALL</a>

Вы можете сделать это:

$('.sortalpha a').on('click', function() {
    fil('');
});

Конечно, это заставит все ссылки отфильтровать на ''. Чтобы это исправить, вы можете получить текст из <a>, по которому щелкнули, и использовать его для вызова fil(), например:

function fil(rexp) {
    if (rexp.length > 0) {
        rexp = '^' + rexp;
    } 
    //$('#tablestyle').dataTable().fnFilter(rexp, 0, true, false);
    alert('Filter on: "' + rexp + '"');
}

$('.sortalpha a').on('click', function(event) {

    var letter = $(this).text().toLowerCase();

    if (letter === 'all') {
        fil('');
    } else {
        fil(letter);
    }
});

Вот рабочий пример: http://jsfiddle.net/uzGat/2/

Редактировать: Я обновил ответ с учетом заглавной буквы и ^ в регулярных выражениях.

1 голос
/ 24 декабря 2011

, если плагин хорошо написан, он должен поддерживать стабильность цепочки, чтобы вы могли делать так:

function fil(rexp)
{
$('#tablestyle').dataTable().fnFilter(rexp, 0, true, false).fnFilter(rexp2, 0, true, false);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...