如何调用javascript函数并将其传递给行的对象?

时间:2012-07-29 15:02:44

标签: jquery

我有以下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');

此代码现在运行良好。

接下来,我想在一行中执行与click事件相同的操作,但是使用调用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
            }

1 个答案:

答案 0 :(得分:0)

您可以使用.call [MDN].apply [MDN]明确设置this

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

请注意,事件处理程序期望this是DOM元素,而不是jQuery对象。此外,如果您的处理程序将使用事件对象(event),则调用此函数当然不起作用。

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

$('#row_24').trigger('click');