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