Javascript jQuery DataTables-fnDestroy后忽略宽度设置(Coffeescript)
我试图创建一个表,当您单击任何行的第一列时,它的内容将以某种“更多详细信息”的方式更改。当我第一次渲染表格时,它很好,但是当我再次渲染时,宽度设置不起作用,表格向右溢出,忽略我设置的宽度 这基本上就是我的代码所做的:Javascript jQuery DataTables-fnDestroy后忽略宽度设置(Coffeescript),javascript,jquery,coffeescript,datatables,jquery-datatables,Javascript,Jquery,Coffeescript,Datatables,Jquery Datatables,我试图创建一个表,当您单击任何行的第一列时,它的内容将以某种“更多详细信息”的方式更改。当我第一次渲染表格时,它很好,但是当我再次渲染时,宽度设置不起作用,表格向右溢出,忽略我设置的宽度 这基本上就是我的代码所做的: MyTable = class module.MyTable constructor: (@my_data) -> setup_table() setup_table: -> @datatable = $('#my-da
MyTable = class module.MyTable
constructor: (@my_data) ->
setup_table()
setup_table: ->
@datatable = $('#my-datatable').dataTable
bAutoWidth: false
bPaginate: false
bSort: true
bFilter: false
bRetrieve: true
iDisplayLength: 50
aaData: @my_data
aoColumns: [{
sWidth: '200px'
fnRender: (obj) =>
# do some stuff
}, {
sWidth: '150px'
fnRender: (obj) =>
# do some other stuff
}]
fnRowCallback: (row, data) =>
key = row.cells[0].firstChild.id
$(row.cells[0].firstChild).unbind().click( () =>
@my_data = @get_data(key)
@datatable.fnDestroy()
@setup_table()
)
row
get_data: (key) ->
# do some stuff
(我意识到fnRender
已被弃用。)
生成标记的方式如下:
<div class="dataTables_wrapper" id="my-datatable_wrapper">
<table id="my-datatable">
<thead>
<tr>
<th class="sorting_asc" rowspan="1" colspan="1" style="width: 200px;">
yada yada
</th>
<th class="sorting" rowspan="1" colspan="1" style="width: 150px;">
yada yada
</th>
</tr>
</thead>
<tbody style="display: table-row-group;">
<tr class="odd">
<td class="sorting_1">
foo
</td>
<td>
bar
</td>
</tr>
<tr class="even">
...and so on
</tr>
... and so on
</tbody>
</table>
</div>
雅达雅达
雅达雅达
福
酒吧
等等
... 等等
所以。。。有什么好处?fnDestroy
没有做我认为应该做的事吗
编辑:为了它的价值,我尝试使用fnClearTable()
和fnAddData()
也没有用。经过多次尝试和磨难,我发现问题在于,尽管我告诉了datatables,任何不适合单元格的文本都会导致单元格拉伸。然后,解决方案是添加一些溢出CSS:
table#my-datatable td {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
由于这导致单元格被切断,我在单元格中添加了title
s。实际上,我正在使用,但我认为jQuery中的等价物应该是这样的:
addTitles: ->
$('table#my-datatable td').each ->
$cell = $(this)
$cell.attr('title', $cell.text())