我之前发过一个令人困惑的问题。长话短说,我有一点jQuery工作接近我想要的方式,但我不能为我的生活让它在CoffeeScript中工作。
当我在CS中尝试不同的方式时,“on search”事件会在加载页面后立即触发。我不能像在jQuery中那样只是附加到dataTable。
我确信这是简单而愚蠢的事。
以下是代码:
$(document).ready(function() {
$('#customers').dataTable( {
"sPaginationType": "bootstrap",
"aaSorting": [],
"ordering": false
} );
$('#customers')
.on( 'search.dt', function () { $('.nested_indent').hide(); } )
} );
最新的CS版本在这里(每次加载页面时都会跳转。)
jQuery ->
$('#customers').dataTable(
"sPaginationType": "bootstrap"
"aaSorting": []
"ordering": false
).$('#customers').on( 'search.dt',
$('.nested_indent').hide() )
答案 0 :(得分:1)
JavaScript版本有两个不同之处:
).$('#customers').on( 'search.dt',
$('.nested_indent').hide() )
第一个是.
之前的$('#customers')
。这会尝试将$
用作方法而不是全局方法。您需要删除.
并插入带有匹配缩进的换行符。
第二个是function
周围的$('.nested_indent').hide()
丢失了。与->
一样,您必须至少包含jQuery ->
来定义一个。
) # 1) separate statements with line break
$('#customers').on( 'search.dt', -> # 2) wrap `hide` in a `function`
$('.nested_indent').hide() )
第二个区别是你看到的原因:
[...]“on search”事件会在页面加载后立即触发。
如果没有->
,则会立即调用.hide()
语句,并将其return
值传递给.on()
,因此它实际上并未绑定到该事件
答案 1 :(得分:0)
问题不在于事件是在页面加载时触发的,而是您传递的$('.nested_indent').hide()
正在页面加载上运行,因为您没有在CS中的函数中传递它你的JavaScript。
你想要的是:
jQuery ->
$('#customers').dataTable(
"sPaginationType": "bootstrap"
"aaSorting": []
"ordering": false
);
$('#customers').on 'search.dt', ->
$('.nested_indent').hide()