我有一个函数,我用它作为自定义事件的回调:
function checkNCreateTb() {
var tbName = $(this).attr('href').replace('content','orders')
/*...*/
}
我使用 .on()来处理将回调该功能的事件
$('#group-pills a').on('shown', checkNCreateTb)
我需要在用户第一次单击DOM的另一部分中的按钮时应用相同的功能。我解决了将点击事件附加到按钮并触发显示的事件。但是,我认为这看起来非常难看,有没有更好的方法来获得相同的结果?
代码:
$('button#action-button').on('click',function() {
$('#group-pills a:first').trigger('shown')
$(this).off('shown') //removing the handler
})
//Create the DataTable if it wasn't already created
$('#group-pills a').on('shown', checkNCreateTb)
答案 0 :(得分:0)
我会使用$.proxy
创建一个函数引用,this
设置为特定值:
$("#action-button").on("click", $.proxy(checkNCreateTb, $("#group-pills a:first")));
或者,使用call
设置this
中checkNCreateTb
的值:
$('#action-button').on('click',function() {
checkNCreateTb.call($("#group-pills a:first"));
});
作为旁注,您不需要在#id
选择器前添加标记名称前缀,因为id
是您可以获得的特定内容,jQuery将在document.getElementbyId
下使用{{1}}罩。