Onclick函数未定义

时间:2014-07-02 14:36:50

标签: javascript jquery

我有一个表格,允许我点击一个项目并更改值。为了针对旧版浏览器(IE8)进行优化,我改变了每次追加<td>元素的表格,连接字符串然后一次追加项目。但是在我的新字符串附加中,附加函数不会被调用。

这是我工作的代码片段:

             $('<td>', {
                 'text': value,
                 'class': 'editableCell',
                 'data-hd': currentCell.hd,
                 'data-cl': currentCell.cl,
                 'click': editFunction
            }).appendTo(tr_body);

我将其更改为:

tableString += '<td class="selectable" data-hd="' + currentCell.hd+ '" data-cl="' + currentCell.cl+ '" onclick="editFunction()">' + value + '</td>';

现在当我点击元素时,我得到一个Uncaught ReferenceError: blurEdit is not defined

任何想法第一个click: editFunction和第二个onclick='editFunction()'之间的区别是什么?

功能是:

 var editFunction= function () {
     $(this).off();
     var value = $(this).text();
     var inp = $('<input>', {
         'type': 'text',
         'value': value,
         'class': 'form-control',
         'blur': blurEdit
     });
     $(this).html(inp);
     inp.focus();
 };

所以它已经到了这么远,然后使用未改变的blurEdit函数失败。

1 个答案:

答案 0 :(得分:1)

  

任何想法第一次点击之间有什么区别:editFunction和第二次onclick =&#39; editFunction()&#39;?

One将对函数的引用(从当前作用域链)分配给事件处理程序。

另一个创建了一个新函数,它尝试在不同的作用域链中通过名称访问上述函数(内部事件处理程序作用域,类似于&#34; onclick函数本身,元素对象的属性,窗口&#34)。

回到第一种方法。它比通过粉碎字符串来创建HTML更清晰,更安全。

相关问题