1
0
mirror of https://github.com/DataTables/DataTables.git synced 2025-02-18 16:54:14 +01:00

Fix: If the thead contained a table the selector that was looking to find the first row in the table was selected the row from the header table rather than the tbody. This could cause errors such as HTML5 data-* attributes not being detected.

This fixes DataTables/DataTables #508
This commit is contained in:
Allan Jardine 2015-03-12 10:29:16 +00:00
parent 59f2748a7f
commit 9896d0295d
3 changed files with 6 additions and 6 deletions

View File

@ -1 +1 @@
073d6e48b8e83c9fd980a77b1b861c40c3554bf4
6c60a9429fae2c76141a9c7f4011a9a4b66d0277

View File

@ -6328,7 +6328,7 @@
/* Remove row stripe classes if they are already on the table row */
var stripeClasses = oSettings.asStripeClasses;
var rowOne = $('tbody tr', this).eq(0);
var rowOne = $this.children('tbody').find('tr').eq(0);
if ( $.inArray( true, $.map( stripeClasses, function(el, i) {
return rowOne.hasClass(el);
} ) ) !== -1 ) {

View File

@ -86,9 +86,9 @@ E(q,e,["asStripeClasses","ajax","fnServerData","fnFormatNumber","sServerMethod",
"sXInner"],["sScrollY","sY"],["bScrollCollapse","bCollapse"]]);E(q.oLanguage,e,"fnInfoCallback");z(q,"aoDrawCallback",e.fnDrawCallback,"user");z(q,"aoServerParams",e.fnServerParams,"user");z(q,"aoStateSaveParams",e.fnStateSaveParams,"user");z(q,"aoStateLoadParams",e.fnStateLoadParams,"user");z(q,"aoStateLoaded",e.fnStateLoaded,"user");z(q,"aoRowCallback",e.fnRowCallback,"user");z(q,"aoRowCreatedCallback",e.fnCreatedRow,"user");z(q,"aoHeaderCallback",e.fnHeaderCallback,"user");z(q,"aoFooterCallback",
e.fnFooterCallback,"user");z(q,"aoInitComplete",e.fnInitComplete,"user");z(q,"aoPreDrawCallback",e.fnPreDrawCallback,"user");j=q.oClasses;e.bJQueryUI?(g.extend(j,o.ext.oJUIClasses,e.oClasses),e.sDom===l.sDom&&"lfrtip"===l.sDom&&(q.sDom='<"H"lfr>t<"F"ip>'),q.renderer)?g.isPlainObject(q.renderer)&&!q.renderer.header&&(q.renderer.header="jqueryui"):q.renderer="jqueryui":g.extend(j,o.ext.classes,e.oClasses);p.addClass(j.sTable);if(""!==q.oScroll.sX||""!==q.oScroll.sY)q.oScroll.iBarWidth=Hb();!0===q.oScroll.sX&&
(q.oScroll.sX="100%");q.iInitDisplayStart===k&&(q.iInitDisplayStart=e.iDisplayStart,q._iDisplayStart=e.iDisplayStart);null!==e.iDeferLoading&&(q.bDeferLoading=!0,h=g.isArray(e.iDeferLoading),q._iRecordsDisplay=h?e.iDeferLoading[0]:e.iDeferLoading,q._iRecordsTotal=h?e.iDeferLoading[1]:e.iDeferLoading);var t=q.oLanguage;g.extend(!0,t,e.oLanguage);""!==t.sUrl&&(g.ajax({dataType:"json",url:t.sUrl,success:function(a){O(a);H(l.oLanguage,a);g.extend(true,t,a);ga(q)},error:function(){ga(q)}}),m=!0);null===
e.asStripeClasses&&(q.asStripeClasses=[j.sStripeOdd,j.sStripeEven]);var h=q.asStripeClasses,s=g("tbody tr",this).eq(0);-1!==g.inArray(!0,g.map(h,function(a){return s.hasClass(a)}))&&(g("tbody tr",this).removeClass(h.join(" ")),q.asDestroyStripes=h.slice());n=[];h=this.getElementsByTagName("thead");0!==h.length&&(da(q.aoHeader,h[0]),n=qa(q));if(null===e.aoColumns){r=[];h=0;for(i=n.length;h<i;h++)r.push(null)}else r=e.aoColumns;h=0;for(i=r.length;h<i;h++)Fa(q,n?n[h]:null);ib(q,e.aoColumnDefs,r,function(a,
b){ka(q,a,b)});if(s.length){var u=function(a,b){return a.getAttribute("data-"+b)!==null?b:null};g.each(na(q,s[0]).cells,function(a,b){var c=q.aoColumns[a];if(c.mData===a){var d=u(b,"sort")||u(b,"order"),e=u(b,"filter")||u(b,"search");if(d!==null||e!==null){c.mData={_:a+".display",sort:d!==null?a+".@data-"+d:k,type:d!==null?a+".@data-"+d:k,filter:e!==null?a+".@data-"+e:k};ka(q,a)}}})}var v=q.oFeatures;e.bStateSave&&(v.bStateSave=!0,Kb(q,e),z(q,"aoDrawCallback",ya,"state_save"));if(e.aaSorting===k){n=
q.aaSorting;h=0;for(i=n.length;h<i;h++)n[h][1]=q.aoColumns[h].asSorting[0]}xa(q);v.bSort&&z(q,"aoDrawCallback",function(){if(q.bSorted){var a=T(q),b={};g.each(a,function(a,c){b[c.src]=c.dir});w(q,null,"order",[q,a,b]);Jb(q)}});z(q,"aoDrawCallback",function(){(q.bSorted||B(q)==="ssp"||v.bDeferRender)&&xa(q)},"sc");gb(q);h=p.children("caption").each(function(){this._captionSide=p.css("caption-side")});i=p.children("thead");0===i.length&&(i=g("<thead/>").appendTo(this));q.nTHead=i[0];i=p.children("tbody");
e.asStripeClasses&&(q.asStripeClasses=[j.sStripeOdd,j.sStripeEven]);var h=q.asStripeClasses,s=p.children("tbody").find("tr").eq(0);-1!==g.inArray(!0,g.map(h,function(a){return s.hasClass(a)}))&&(g("tbody tr",this).removeClass(h.join(" ")),q.asDestroyStripes=h.slice());n=[];h=this.getElementsByTagName("thead");0!==h.length&&(da(q.aoHeader,h[0]),n=qa(q));if(null===e.aoColumns){r=[];h=0;for(i=n.length;h<i;h++)r.push(null)}else r=e.aoColumns;h=0;for(i=r.length;h<i;h++)Fa(q,n?n[h]:null);ib(q,e.aoColumnDefs,
r,function(a,b){ka(q,a,b)});if(s.length){var u=function(a,b){return a.getAttribute("data-"+b)!==null?b:null};g.each(na(q,s[0]).cells,function(a,b){var c=q.aoColumns[a];if(c.mData===a){var d=u(b,"sort")||u(b,"order"),e=u(b,"filter")||u(b,"search");if(d!==null||e!==null){c.mData={_:a+".display",sort:d!==null?a+".@data-"+d:k,type:d!==null?a+".@data-"+d:k,filter:e!==null?a+".@data-"+e:k};ka(q,a)}}})}var v=q.oFeatures;e.bStateSave&&(v.bStateSave=!0,Kb(q,e),z(q,"aoDrawCallback",ya,"state_save"));if(e.aaSorting===
k){n=q.aaSorting;h=0;for(i=n.length;h<i;h++)n[h][1]=q.aoColumns[h].asSorting[0]}xa(q);v.bSort&&z(q,"aoDrawCallback",function(){if(q.bSorted){var a=T(q),b={};g.each(a,function(a,c){b[c.src]=c.dir});w(q,null,"order",[q,a,b]);Jb(q)}});z(q,"aoDrawCallback",function(){(q.bSorted||B(q)==="ssp"||v.bDeferRender)&&xa(q)},"sc");gb(q);h=p.children("caption").each(function(){this._captionSide=p.css("caption-side")});i=p.children("thead");0===i.length&&(i=g("<thead/>").appendTo(this));q.nTHead=i[0];i=p.children("tbody");
0===i.length&&(i=g("<tbody/>").appendTo(this));q.nTBody=i[0];i=p.children("tfoot");if(0===i.length&&0<h.length&&(""!==q.oScroll.sX||""!==q.oScroll.sY))i=g("<tfoot/>").appendTo(this);0===i.length||0===i.children().length?p.addClass(j.sNoFooter):0<i.length&&(q.nTFoot=i[0],da(q.aoFooter,q.nTFoot));if(e.aaData)for(h=0;h<e.aaData.length;h++)J(q,e.aaData[h]);else(q.bDeferLoading||"dom"==B(q))&&ma(q,g(q.nTBody).children("tr"));q.aiDisplay=q.aiDisplayMaster.slice();q.bInitialised=!0;!1===m&&ga(q)}});b=null;
return this};var Tb=[],v=Array.prototype,cc=function(a){var b,c,d=o.settings,e=g.map(d,function(a){return a.nTable});if(a){if(a.nTable&&a.oApi)return[a];if(a.nodeName&&"table"===a.nodeName.toLowerCase())return b=g.inArray(a,e),-1!==b?[d[b]]:null;if(a&&"function"===typeof a.settings)return a.settings().toArray();"string"===typeof a?c=g(a):a instanceof g&&(c=a)}else return[];if(c)return c.map(function(){b=g.inArray(this,e);return-1!==b?d[b]:null}).toArray()};t=function(a,b){if(!this instanceof t)throw"DT API must be constructed as a new object";
var c=[],d=function(a){(a=cc(a))&&c.push.apply(c,a)};if(g.isArray(a))for(var e=0,f=a.length;e<f;e++)d(a[e]);else d(a);this.context=Na(c);b&&this.push.apply(this,b.toArray?b.toArray():b);this.selector={rows:null,cols:null,opts:null};t.extend(this,this,Tb)};o.Api=t;t.prototype={concat:v.concat,context:[],each:function(a){for(var b=0,c=this.length;b<c;b++)a.call(this,this[b],b,this);return this},eq:function(a){var b=this.context;return b.length>a?new t(b[a],this[a]):null},filter:function(a){var b=[];
@ -107,7 +107,7 @@ a[b].length)return a[0]=a[b],a.length=1,a.context=[a.context[b]],a;a.length=0;re
d;c++)"none"==i?f.push(c):(e=g.inArray(c,h),(-1===e&&"removed"==i||0<=e&&"applied"==i)&&f.push(c))}return f};r("rows()",function(a,b){a===k?a="":g.isPlainObject(a)&&(b=a,a="");var b=ab(b),c=this.iterator("table",function(c){var e=b;return $a(a,function(a){var b=Pb(a);if(b!==null&&!e)return[b];var i=Ca(c,e);if(b!==null&&g.inArray(b,i)!==-1)return[b];if(!a)return i;if(typeof a==="function")return g.map(i,function(b){var e=c.aoData[b];return a(b,e._aData,e.nTr)?b:null});b=Sb(ia(c.aoData,i,"nTr"));return a.nodeName&&
g.inArray(a,b)!==-1?[a._DT_RowIndex]:g(b).filter(a).map(function(){return this._DT_RowIndex}).toArray()})},1);c.selector.rows=a;c.selector.opts=b;return c});r("rows().nodes()",function(){return this.iterator("row",function(a,b){return a.aoData[b].nTr||k},1)});r("rows().data()",function(){return this.iterator(!0,"rows",function(a,b){return ia(a.aoData,b,"_aData")},1)});u("rows().cache()","row().cache()",function(a){return this.iterator("row",function(b,c){var d=b.aoData[c];return"search"===a?d._aFilterData:
d._aSortData},1)});u("rows().invalidate()","row().invalidate()",function(a){return this.iterator("row",function(b,c){ca(b,c,a)})});u("rows().indexes()","row().index()",function(){return this.iterator("row",function(a,b){return b},1)});u("rows().remove()","row().remove()",function(){var a=this;return this.iterator("row",function(b,c,d){var e=b.aoData;e.splice(c,1);for(var f=0,h=e.length;f<h;f++)null!==e[f].nTr&&(e[f].nTr._DT_RowIndex=f);g.inArray(c,b.aiDisplay);pa(b.aiDisplayMaster,c);pa(b.aiDisplay,
c);pa(a[d],c,!1);Sa(b)})});r("rows.add()",function(a){var b=this.iterator("table",function(b){var c,f,g,i=[];f=0;for(g=a.length;f<g;f++)c=a[f],c.nodeName&&"TR"===c.nodeName.toUpperCase()?i.push(ma(b,c)[0]):i.push(J(b,c));return i},1),c=this.rows(-1);c.pop();c.push.apply(c,b.toArray());return c});r("row()",function(a,b){return bb(this.rows(a,b))});r("row().data()",function(a){var b=this.context;if(a===k)return b.length&&this.length?b[0].aoData[this[0]]._aData:k;b[0].aoData[this[0]]._aData=a;ca(b[0],
c);pa(a[d],c,!1);Sa(b)})});r("rows.add()",function(a){var b=this.iterator("table",function(b){var c,f,h,g=[];f=0;for(h=a.length;f<h;f++)c=a[f],c.nodeName&&"TR"===c.nodeName.toUpperCase()?g.push(ma(b,c)[0]):g.push(J(b,c));return g},1),c=this.rows(-1);c.pop();c.push.apply(c,b.toArray());return c});r("row()",function(a,b){return bb(this.rows(a,b))});r("row().data()",function(a){var b=this.context;if(a===k)return b.length&&this.length?b[0].aoData[this[0]]._aData:k;b[0].aoData[this[0]]._aData=a;ca(b[0],
this[0],"data");return this});r("row().node()",function(){var a=this.context;return a.length&&this.length?a[0].aoData[this[0]].nTr||null:null});r("row.add()",function(a){a instanceof g&&a.length&&(a=a[0]);var b=this.iterator("table",function(b){return a.nodeName&&"TR"===a.nodeName.toUpperCase()?ma(b,a)[0]:J(b,a)});return this.row(b[0])});var cb=function(a,b){var c=a.context;c.length&&(c=c[0].aoData[b!==k?b:a[0]],c._details&&(c._details.remove(),c._detailsShow=k,c._details=k))},Vb=function(a,b){var c=
a.context;if(c.length&&a.length){var d=c[0].aoData[a[0]];if(d._details){(d._detailsShow=b)?d._details.insertAfter(d.nTr):d._details.detach();var e=c[0],f=new t(e),g=e.aoData;f.off("draw.dt.DT_details column-visibility.dt.DT_details destroy.dt.DT_details");0<D(g,"_details").length&&(f.on("draw.dt.DT_details",function(a,b){e===b&&f.rows({page:"current"}).eq(0).each(function(a){a=g[a];a._detailsShow&&a._details.insertAfter(a.nTr)})}),f.on("column-visibility.dt.DT_details",function(a,b){if(e===b)for(var c,
d=aa(b),f=0,k=g.length;f<k;f++)c=g[f],c._details&&c._details.children("td[colspan]").attr("colspan",d)}),f.on("destroy.dt.DT_details",function(a,b){if(e===b)for(var c=0,d=g.length;c<d;c++)g[c]._details&&cb(f,c)}))}}};r("row().child()",function(a,b){var c=this.context;if(a===k)return c.length&&this.length?c[0].aoData[this[0]]._details:k;if(!0===a)this.child.show();else if(!1===a)cb(this);else if(c.length&&this.length){var d=c[0],c=c[0].aoData[this[0]],e=[],f=function(a,b){if(a.nodeName&&"tr"===a.nodeName.toLowerCase())e.push(a);