【问题标题】:Refactor jquery closure: How to refactor to nominal function?重构 jquery 闭包:如何重构为标称函数?
【发布时间】:2015-11-11 10:13:57
【问题描述】:

我的代码工作(代码测试)使用闭包来添加我的日历的点击事件项目。如果用户点击一天,代码会在表格 id myTable(数据表插件)中添加一行

$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++;
    }

【问题讨论】:

  • 使用$('#' + id).click(jsonToTable);。使用函数引用,而不是调用它。

标签: javascript jquery refactoring closures


【解决方案1】:

您必须通过 jsonToTable 引用。它不起作用,因为您调用它并传递它的返回值。

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

【讨论】:

  • 也不起作用...编辑我的帖子以添加此格式。在这种格式下,显示日历事件,但点击时不会将数据添加到表格中。
  • 它找到$('#' + id) 对象了吗? $('#' + id).length 返回什么?
  • 在将jsonToTable 传递给点击函数之前,您是否定义了它?
  • 在前后尝试使用函数 jsonToTable。不工作。
  • 函数调用了吗?将alert("hello"); 或其他内容放在第一行进行检查。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-09-12
  • 1970-01-01
  • 2017-05-04
  • 1970-01-01
  • 1970-01-01
  • 2013-12-24
  • 2022-12-03
相关资源
最近更新 更多