1

我有一个函数用作自定义事件的回调:

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)
4

1 回答 1

0

我会$.proxy用来创建一个this设置为特定值的函数引用:

$("#action-button").on("click", $.proxy(checkNCreateTb, $("#group-pills a:first")));

或者,或者,用于call设置thisin的值checkNCreateTb

$('#action-button').on('click',function() {
    checkNCreateTb.call($("#group-pills a:first"));
});

附带说明一下,您不需要在#id选择器前面加上标签名称,因为id它是尽可能具体的,并且 jQuery 将document.getElementbyId在后台使用。

于 2012-06-25T23:50:50.457 回答