我必须说我不知道正确的术语,所以请原谅我的一些错误。 我有一个带行的表。表格中 last 行的最后一个可编辑列使用TabKey启用,该TabKey会自动创建一个新行。
function enableTab() {
lastEditable = currentTable
.find("tr")
.find('textarea, .cleanbox-editable-cell')
.not(function(index, element) {
return $(element).parent().css("display") == "none";
})
.last();
lastEditable.unbind("keydown");
lastEditable.keydown(function(e) {
var keyCode = e.keyCode || e.which;
createNewRow();
};
};
function createNewRow() {
createRow();
enableTab();
}
创建新行时,将重新计算lastEditable变量。 我想要的是lastEditable仅与最后一行的最后一列相关联。无论如何,会发生的是创建一个新行,以及新行和前一行'当我只希望 new 行能够执行这样的功能时,最后一列提供了创建新行的功能。
因此,在我看来,会发生的是:每次创建新行时,变量 lastEditable都正确地与新行的最后一列相关联。但是之前与同一个变量相关联的对象的功能不会被删除:它根本就没有名称。
我是对的吗?如何删除对象?
我尝试了以下操作,但它没有工作:
lastEditable.keydown(function(e) {
var keyCode = e.keyCode || e.which;
delete lastEditable;
createNewRow();
};
答案 0 :(得分:0)
您正在取消绑定事件处理程序,然后立即将同一事件处理程序重新应用于同一元素。您需要重新组织代码,以便在创建新行时将事件处理程序绑定到新元素http://jsfiddle.net/2fLrsjcz/
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" />
<xsl:template match="/">
<xsl:for-each select="/Integration/Case/CaseEvent[(Deleted='false') and ((EventType/@Word='DLSUSFTP') or (EventType/@Word='DLREINSNON'))]">
<xsl:sort select="substring(EventDate,7,4)" order="descending"/>
<xsl:sort select="substring(EventDate,1,2)" order="descending"/>
<xsl:sort select="substring(EventDate,4,2)" order="descending"/>
<xsl:sort select="substring-after(EventTime,' ')" order="descending"/>
<xsl:sort select="substring-before(EventTime,':')" order="descending" data-type="number"/>
<xsl:sort select="substring-before(substring-after(EventTime,':'),' ')" order="descending" data-type="number"/>
<xsl:if test="position() = 1">
<xsl:apply-templates select="EventType"/>
</xsl:if>
</xsl:for-each>
</xsl:template>
<xsl:template match="EventType">
<EventType eventDate="{../EventDate}" eventTime="{../EventTime}">
<xsl:apply-templates />
</EventType>
</xsl:template>
</xsl:stylesheet>
答案 1 :(得分:0)
要改进这篇可能对其他人有用的帖子,研究Lee的代码我已经解决了我的问题,只需将lastEditable.unbind(“keydown”)移动到.keydown(function(e){}),如下所示:
function enableTab() {
lastEditable = currentTable
.find("tr")
.find('textarea, .cleanbox-editable-cell')
.not(function(index, element) {
return $(element).parent().css("display") == "none";
})
.last();
lastEditable.keydown(function(e) {
var keyCode = e.keyCode || e.which;
lastEditable.unbind("keydown");
createNewRow();
};
};
function createNewRow() {
createRow();
enableTab();
}