mirror of
https://github.com/DataTables/DataTables.git
synced 2025-02-21 19:54:15 +01:00
Fix: Namespace all events added via jQuery (using the 'DT' namespace) to make events easy to remove in fnDestroy.
Fix: Remove all added events in fnDestroy, otherwise DataTables will leak memory like crazy when the destroy function is called
This commit is contained in:
parent
fdef8e02c3
commit
d5b106a2a2
37
media/js/jquery.dataTables.js
vendored
37
media/js/jquery.dataTables.js
vendored
@ -318,7 +318,7 @@
|
|||||||
nPaging.appendChild( nPrevious );
|
nPaging.appendChild( nPrevious );
|
||||||
nPaging.appendChild( nNext );
|
nPaging.appendChild( nNext );
|
||||||
|
|
||||||
$(nPrevious).click( function() {
|
$(nPrevious).bind( 'click.DT', function() {
|
||||||
if ( oSettings.oApi._fnPageChange( oSettings, "previous" ) )
|
if ( oSettings.oApi._fnPageChange( oSettings, "previous" ) )
|
||||||
{
|
{
|
||||||
/* Only draw when the page has actually changed */
|
/* Only draw when the page has actually changed */
|
||||||
@ -326,7 +326,7 @@
|
|||||||
}
|
}
|
||||||
} );
|
} );
|
||||||
|
|
||||||
$(nNext).click( function() {
|
$(nNext).bind( 'click.DT', function() {
|
||||||
if ( oSettings.oApi._fnPageChange( oSettings, "next" ) )
|
if ( oSettings.oApi._fnPageChange( oSettings, "next" ) )
|
||||||
{
|
{
|
||||||
fnCallbackDraw( oSettings );
|
fnCallbackDraw( oSettings );
|
||||||
@ -334,8 +334,8 @@
|
|||||||
} );
|
} );
|
||||||
|
|
||||||
/* Take the brutal approach to cancelling text selection */
|
/* Take the brutal approach to cancelling text selection */
|
||||||
$(nPrevious).bind( 'selectstart', function () { return false; } );
|
$(nPrevious).bind( 'selectstart.DT', function () { return false; } );
|
||||||
$(nNext).bind( 'selectstart', function () { return false; } );
|
$(nNext).bind( 'selectstart.DT', function () { return false; } );
|
||||||
|
|
||||||
/* ID the first elements only */
|
/* ID the first elements only */
|
||||||
if ( oSettings.sTableId !== '' && typeof oSettings.aanFeatures.p == "undefined" )
|
if ( oSettings.sTableId !== '' && typeof oSettings.aanFeatures.p == "undefined" )
|
||||||
@ -425,28 +425,28 @@
|
|||||||
nPaging.appendChild( nNext );
|
nPaging.appendChild( nNext );
|
||||||
nPaging.appendChild( nLast );
|
nPaging.appendChild( nLast );
|
||||||
|
|
||||||
$(nFirst).click( function () {
|
$(nFirst).bind( 'click.DT', function () {
|
||||||
if ( oSettings.oApi._fnPageChange( oSettings, "first" ) )
|
if ( oSettings.oApi._fnPageChange( oSettings, "first" ) )
|
||||||
{
|
{
|
||||||
fnCallbackDraw( oSettings );
|
fnCallbackDraw( oSettings );
|
||||||
}
|
}
|
||||||
} );
|
} );
|
||||||
|
|
||||||
$(nPrevious).click( function() {
|
$(nPrevious).bind( 'click.DT', function() {
|
||||||
if ( oSettings.oApi._fnPageChange( oSettings, "previous" ) )
|
if ( oSettings.oApi._fnPageChange( oSettings, "previous" ) )
|
||||||
{
|
{
|
||||||
fnCallbackDraw( oSettings );
|
fnCallbackDraw( oSettings );
|
||||||
}
|
}
|
||||||
} );
|
} );
|
||||||
|
|
||||||
$(nNext).click( function() {
|
$(nNext).bind( 'click.DT', function() {
|
||||||
if ( oSettings.oApi._fnPageChange( oSettings, "next" ) )
|
if ( oSettings.oApi._fnPageChange( oSettings, "next" ) )
|
||||||
{
|
{
|
||||||
fnCallbackDraw( oSettings );
|
fnCallbackDraw( oSettings );
|
||||||
}
|
}
|
||||||
} );
|
} );
|
||||||
|
|
||||||
$(nLast).click( function() {
|
$(nLast).bind( 'click.DT', function() {
|
||||||
if ( oSettings.oApi._fnPageChange( oSettings, "last" ) )
|
if ( oSettings.oApi._fnPageChange( oSettings, "last" ) )
|
||||||
{
|
{
|
||||||
fnCallbackDraw( oSettings );
|
fnCallbackDraw( oSettings );
|
||||||
@ -455,8 +455,8 @@
|
|||||||
|
|
||||||
/* Take the brutal approach to cancelling text selection */
|
/* Take the brutal approach to cancelling text selection */
|
||||||
$('span', nPaging)
|
$('span', nPaging)
|
||||||
.bind( 'mousedown', function () { return false; } )
|
.bind( 'mousedown.DT', function () { return false; } )
|
||||||
.bind( 'selectstart', function () { return false; } );
|
.bind( 'selectstart.DT', function () { return false; } );
|
||||||
|
|
||||||
/* ID the first elements only */
|
/* ID the first elements only */
|
||||||
if ( oSettings.sTableId !== '' && typeof oSettings.aanFeatures.p == "undefined" )
|
if ( oSettings.sTableId !== '' && typeof oSettings.aanFeatures.p == "undefined" )
|
||||||
@ -554,8 +554,8 @@
|
|||||||
/* Build up the dynamic list forst - html and listeners */
|
/* Build up the dynamic list forst - html and listeners */
|
||||||
var qjPaginateList = $('span:eq(2)', an[i]);
|
var qjPaginateList = $('span:eq(2)', an[i]);
|
||||||
qjPaginateList.html( sList );
|
qjPaginateList.html( sList );
|
||||||
$('span', qjPaginateList).click( fnClick ).bind( 'mousedown', fnFalse )
|
$('span', qjPaginateList).bind( 'click.DT', fnClick ).bind( 'mousedown.DT', fnFalse )
|
||||||
.bind( 'selectstart', fnFalse );
|
.bind( 'selectstart.DT', fnFalse );
|
||||||
|
|
||||||
/* Update the 'premanent botton's classes */
|
/* Update the 'premanent botton's classes */
|
||||||
anButtons = an[i].getElementsByTagName('span');
|
anButtons = an[i].getElementsByTagName('span');
|
||||||
@ -2138,6 +2138,9 @@
|
|||||||
/* Flag to note that the table is currently being destoryed - no action should be taken */
|
/* Flag to note that the table is currently being destoryed - no action should be taken */
|
||||||
oSettings.bDestroying = true;
|
oSettings.bDestroying = true;
|
||||||
|
|
||||||
|
/* Blitz all DT events */
|
||||||
|
$(oSettings.nTableWrapper).find('*').unbind('.DT');
|
||||||
|
|
||||||
/* Restore hidden columns */
|
/* Restore hidden columns */
|
||||||
for ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )
|
for ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )
|
||||||
{
|
{
|
||||||
@ -2961,7 +2964,7 @@
|
|||||||
_fnSortAttachListener( oSettings, oSettings.aoColumns[i].nTh, i );
|
_fnSortAttachListener( oSettings, oSettings.aoColumns[i].nTh, i );
|
||||||
|
|
||||||
/* Take the brutal approach to cancelling text selection in header */
|
/* Take the brutal approach to cancelling text selection in header */
|
||||||
$(oSettings.aoColumns[i].nTh).mousedown( fnNoSelect );
|
$(oSettings.aoColumns[i].nTh).bind( 'mousedown.DT', fnNoSelect );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -4012,7 +4015,7 @@
|
|||||||
|
|
||||||
var jqFilter = $("input", nFilter);
|
var jqFilter = $("input", nFilter);
|
||||||
jqFilter.val( oSettings.oPreviousSearch.sSearch.replace('"','"') );
|
jqFilter.val( oSettings.oPreviousSearch.sSearch.replace('"','"') );
|
||||||
jqFilter.keyup( function(e) {
|
jqFilter.bind( 'keyup.DT', function(e) {
|
||||||
/* Update all other filter input elements for the new display */
|
/* Update all other filter input elements for the new display */
|
||||||
var n = oSettings.aanFeatures.f;
|
var n = oSettings.aanFeatures.f;
|
||||||
for ( var i=0, iLen=n.length ; i<iLen ; i++ )
|
for ( var i=0, iLen=n.length ; i<iLen ; i++ )
|
||||||
@ -4034,7 +4037,7 @@
|
|||||||
}
|
}
|
||||||
} );
|
} );
|
||||||
|
|
||||||
jqFilter.keypress( function(e) {
|
jqFilter.bind( 'keypress.DT', function(e) {
|
||||||
/* Prevent default */
|
/* Prevent default */
|
||||||
if ( e.keyCode == 13 )
|
if ( e.keyCode == 13 )
|
||||||
{
|
{
|
||||||
@ -4475,7 +4478,7 @@
|
|||||||
*/
|
*/
|
||||||
function _fnSortAttachListener ( oSettings, nNode, iDataIndex, fnCallback )
|
function _fnSortAttachListener ( oSettings, nNode, iDataIndex, fnCallback )
|
||||||
{
|
{
|
||||||
$(nNode).click( function (e) {
|
$(nNode).bind( 'click.DT', function (e) {
|
||||||
/* If the column is not sortable - don't to anything */
|
/* If the column is not sortable - don't to anything */
|
||||||
if ( oSettings.aoColumns[iDataIndex].bSortable === false )
|
if ( oSettings.aoColumns[iDataIndex].bSortable === false )
|
||||||
{
|
{
|
||||||
@ -5004,7 +5007,7 @@
|
|||||||
*/
|
*/
|
||||||
$('select option[value="'+oSettings._iDisplayLength+'"]',nLength).attr("selected",true);
|
$('select option[value="'+oSettings._iDisplayLength+'"]',nLength).attr("selected",true);
|
||||||
|
|
||||||
$('select', nLength).change( function(e) {
|
$('select', nLength).bind( 'change.DT', function(e) {
|
||||||
var iVal = $(this).val();
|
var iVal = $(this).val();
|
||||||
|
|
||||||
/* Update all other length options for the new display */
|
/* Update all other length options for the new display */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user