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

您可以this使用.call [MDN].apply [MDN]显式设置:

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

请注意,事件处理程序this应该是一个 DOM 元素,而不是一个 jQuery 对象。此外,如果您的处理程序将使用事件对象 ( event) 调用这样的函数当然是行不通的。

上述方式允许您执行任何DOM 元素的处理程序。但是由于您想为一行执行处理程序,您可以模拟对特定行的单击:

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