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")));

または、代わりに、を使用してincallの値を設定します。thischeckNCreateTb

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

#idちなみに、セレクターの前にタグ名を付ける必要はありません。これidは、取得できる限り具体的であり、jQueryが内部document.getElementbyIdで使用するためです。

于 2012-06-25T23:50:50.457 に答える