1

私は次のjQueryを持っています:

$('#dataTable').on('click', 'tbody tr', clickHandler);

これが私の gridClickHander の最初の数行です

function gridClickHandler(event) {
    $(oTable.fnSettings().aoData).each(function () {
        $(this.nTr).removeClass('row_selected');
    });
    $(this).addClass('row_selected');
    var rk = $(this).attr('data-rk');
    var pk = $(this).attr('data-pk');

このコードは非常にうまく機能するようになりました。

次に、行のクリック イベントと同じことを行いたいと思いますが、gridClickHandler を呼び出す javascript/jQuery コードを使用します。たとえば、id="row_25" の行。これを行う方法はありますか?申し訳ありませんが、$(this) の処理方法について混乱しています。

これが私のコードです:

  if (obj.entity == "City") {
                var html = obj.$form.find("#select-topic").html();
                var indx = obj.$form.find("#select-topic").index()
                $("#input_TempRowKey_" + obj.rownum).html(html);
                $("#input_TempRowKey_" + obj.rownum).eq(indx).attr('selected', 'selected');
                var title = obj.$form.find("#Title").val();
                $("#input_Title_" + obj.rownum).val(title);
                $("tr#row_" + obj.rownum).attr("data-rk", json.rowKey);
                // here I need to do the same as though a user just clicked on rownum
            }
4

1 に答える 1

0

[MDN]または[MDNthis ]を使用して明示的に設定できます。.call .apply

gridClickHandler.call(referenceToDOMElement);
// example: gridClickHandler.call($('#row_25').get(0));

thisイベント ハンドラーは、jQuery オブジェクトではなく、DOM 要素であると想定していることに注意してください。また、ハンドラーがイベント オブジェクト ( event) を使用する場合、このように関数を呼び出してももちろん機能しません。

上記の方法により、任意のDOM 要素のハンドラーを実行できます。ただし、行のハンドラーを実行したいので、特定の行のクリックをシミュレートできます。

$('#row_24').trigger('click');
于 2012-07-29T15:11:23.653 に答える