JQuery DataTables - fnDrawCallback Рекурсивная проблема - PullRequest
4 голосов
/ 18 ноября 2011

Итак, в моей таблице данных есть кнопки, позволяющие редактировать запись.Я использую JQuery для стилизации и придания функций нажатию кнопки.Единственный способ применить JQuery к кнопкам, это поместить код в параметр fnDrawCallback таблицы.Тем не менее, это вызывает несколько экземпляров функций!Например, просто чтобы проверить, я создаю предупреждение, чтобы дать мне идентификатор кнопки (который является идентификатором записи) при нажатии кнопки.И вместо того, чтобы просто предупредить меня ОДИН РАЗ, он дает мне несколько предупреждений!

Любые идеи?

* В качестве примечания, я попытался объявить функции внутри параметра fnInitComplete, но это касается толькоФункция для первого набора записей, который отображается (например, 10).Когда я показываю больше записей или перехожу на следующую страницу, функции не работают с этими записями.

var tfTable = $('.mypbhs_truforms').dataTable({
        "bProcessing": true,
        "sAjaxSource": 'sql/mypbhs_truforms.php?accountid=<?PHP echo $accountid;?>',        
        "aaSorting": [[ 1, "asc" ]],
        "bJQueryUI": true,
        "sPaginationType": "full_numbers",
        //"bStateSave": true, //Use a cookie to save current display of items
        "aoColumns": [
            {"asSorting": [  ], "sClass":"center"},
            null,
            null,
            null,
            null,
            null,
            {"asSorting": [  ], "sClass":"center"},
        ],
        "fnDrawCallback": function(){
            //EDIT OFFICE FORM
            $('.mypbhs_edit_truform_button').click(function(){
                var tf_id = $(this).attr('id');
                alert(tf_id);
            });
        },
        "bScrollCollapse": true,
        "sScrollX": "100%",
         "fnInitComplete": function() {
                tfTable.fnAdjustColumnSizing();
         }
    });

Ответы [ 2 ]

2 голосов
/ 18 ноября 2011

Хорошо, так что нашли способ обойти это.Использование функции .on JQuery для всех функций, которые я помещал в опцию fnDrawCallback.Мне любопытно, почему использование fnDrawCallback создает несколько экземпляров одной и той же функции, хотя, если у кого-то есть ответ на этот вопрос.

0 голосов
/ 19 ноября 2011

Где живет .mypbhs_edit_truform_button?Если он находится за пределами самой необработанной таблицы, он будет связан снова каждый раз, когда таблица перерисовывается.Поскольку .on() работает, он, по-видимому, находится в режиме делегата (поскольку он МОЖЕТ быть просто прямым переводом .click ()) .. это означает, что он действительно находится вне самой необработанной таблицы, отсюда и несколько привязок.

Если вы хотите сделать это оригинальным способом (хотя я думаю, что .on () лучше), есть ли причина не помещать его в обратный вызов InitComplete?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...