重构jquery闭包:如何重构名义函数?

时间:2015-11-11 10:13:57

标签: javascript jquery refactoring closures

我的代码工作(代码测试)使用闭包来添加我的日历的点击事件tu项目。如果用户点击一天,代码就会添加一行到表id myTable(datatable plugin)

$dowElement.addClass('event-clickable'); 
$('#' + id).click(function(){
     $('#myTable').dataTable().fnAddData([
            giCount+ ".1",
            giCount+ ".2",
            giCount+ ".3",
            giCount+ ".4"
        ]);
        giCount++;
 });

尝试使用重构来使用函数,但不能正常工作。

 $dowElement.addClass('event-clickable'); 
 $('#' + id).click(jsonToTable());  // No work and broke calendar

也可以尝试

$dowElement.addClass('event-clickable');
$('#' + id).click(function(){
    jsonToTable();
});

第一次回答后(编辑)如果点击不起作用,但显示包含事件的日历。

$dowElement.addClass('event-clickable');
$('#' + id).click(jsonToTable);

很明显,我不理解使用javascript的某些部分。

function jsonToTable() {

        $('#myTable').dataTable().fnAddData([
            giCount+ ".1",
            giCount+ ".2",
            giCount+ ".3",
            giCount+ ".4"
        ]);
        giCount++;
    }

1 个答案:

答案 0 :(得分:1)

您必须传递jsonToTable参考。它不起作用,因为你调用它并传递它的返回值。

$('#' + id).click(jsonToTable);