jquery datatables добавляет класс row_selected к строке - PullRequest
0 голосов
/ 28 марта 2011

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

        $("#rulesTable tbody").click(function(event) {

            $(rulesTableGlobal.fnSettings().aoData).each(function (){
                $(this.nTr).removeClass('row_selected');
            });
            $(event.target.parentNode).addClass('row_selected');

            var row = getSelectedRowIndex(rulesTableGlobal);
            var selectedYear = $('#comboYear'+ row +' option:selected').text(); 
            var propertyId = rulesTableGlobal.fnGetData()[row][0];

            $('#calendarFrame').attr('src', "propertyTariffCalendar.php?ref="+propertyId+"&year="+selectedYear);
            updateDescription(row, selectedYear);

        });

// изменения комбо со всеми попытками.ни один из них не добавляет класс в строку.

        $("#comboYear"+rowNo).change(function () {

            var comboId    = $(this).attr('id');
            var comboIndex = $(this).attr('name');
            var propertyId = rulesTableGlobal.fnGetData()[comboIndex][0];
            var yearSelected = $('#'+comboId+' option:selected').text();

            //alert(comboId + "-" + comboIndex+ "-" + yearSelected+ "-" +propertyId);
            $.fn.upDateRow ( propertyId, yearSelected, comboIndex );
            $('#calendarFrame').attr('src', "propertyTariffCalendar.php?ref="+propertyId+"&year="+yearSelected);

            updateDescription(rowNo, yearSelected);

            /*var orjRow = $(this);
            var row    = orjRow.closest("tr").get(0);
            $().addClass("row_selected");
            */

            var orjRow = $("#comboYear"+rowNo);

            //orjRow.parent().parent().addClass("row_selected");
            //alert($(this).closest("tr").attr('id'));
            //$('td:eq(0)', nRow).addClass('highloadRow');

            //$(this).parent().parent().parent().addClass('row_selected');
            //$(this).closest('tr').get(0).addClass('row_selected');
            //$(this).closest('tr').addClass('row_selected');
            //$(this).closest('td').closest('tr').addClass('row_selected');
            //alert($(this).closest("tr").parent());
            //$(this).closest("tr").get(0).addClass("row_selected");
            //$(this).closest("tr").addClass("row_selected");
            //$(event.target.parentNode).addClass('row_selected');

        });

Ответы [ 2 ]

1 голос
/ 28 марта 2011

Хорошо, я не мог полностью понять ваш вопрос, но из того, что я могу получить, вы хотите, чтобы строка (tr верно?) Получила класс row_selected, когда пользователь нажимает на нее, и удаляла класс из других рядов. Если это то, что вы хотите, этот кусок волшебства подойдет:)

$('#rulesTable').delegate('tr', 'click', function (e) {
    $(this).addClass('row_selected').siblings().removeClass('row_selected');
    // do other things here...
});

Скажи мне, если это не то, что ты хотел.

0 голосов
/ 28 марта 2011

РЕШЕНИЕ: это модифицированный ответ, который я использовал, основываясь на ответе Шриканта Шарата.Еще раз спасибо миллиону. 'Select-one' используется, чтобы указать, является ли выбранный элемент самим комбо (есть 2 типа комбо. Они разделены как select-one и select-two).Потому что цель меняется в зависимости от выбранного элемента.

Озлем.

            if(event.target.type == 'select-one') {
                //$(event.target.parentNode.parentNode).addClass('row_selected');
                $(event.target.parentNode.parentNode).addClass('row_selected').siblings().removeClass('row_selected');
            }else {
                //$(event.target.parentNode).addClass('row_selected');
                $(event.target.parentNode).addClass('row_selected').siblings().removeClass('row_selected');
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...