Javascript 分离函数时不记得自身的变量
作为对上一个问题和这个答案()的扩展,我试图调整JavaScript代码,以便在其他类中使用相同的双击功能 我的代码如下 如果您尝试双击H3或表格,它们似乎不会返回。我认为原因是,Javascript 分离函数时不记得自身的变量,javascript,jquery,html,css,scope,Javascript,Jquery,Html,Css,Scope,作为对上一个问题和这个答案()的扩展,我试图调整JavaScript代码,以便在其他类中使用相同的双击功能 我的代码如下 如果您尝试双击H3或表格,它们似乎不会返回。我认为原因是,$el变量没有正确注册和/或记忆 我尝试了一些方法,比如返回$el变量并重用它。我尝试为$el[search]使用一个数组,因此每个数组都是唯一的。没有一个奏效。我有点困惑,我认为这是一个微妙的JavaScript内存问题 供参考: 如果你运行这个程序,你会看到双击一次又一次的工作。我希望获得相同的效果,但将其推广到D
$el
变量没有正确注册和/或记忆
我尝试了一些方法,比如返回$el
变量并重用它。我尝试为$el[search]
使用一个数组,因此每个数组都是唯一的。没有一个奏效。我有点困惑,我认为这是一个微妙的JavaScript内存问题
供参考:
如果你运行这个程序,你会看到双击一次又一次的工作。我希望获得相同的效果,但将其推广到DOM中的任何html类/id。问题在于,您不仅要隐藏元素,还要从DOM中删除它们(JSFIDLE中的第25行)。删除它们后,您还可以调用
hide
(第17行),然后调用toggle
(第18行),但这些元素不再存在,无法hide
或toggle
。您可以通过删除$rowsToHide.hide()来解决此问题代码>(第17行)和$rowsToHide.remove()代码>(第25行)。这将隐藏元素,但不会从DOM中删除它们。这是不对的:
$('table#safe-distances-table').dblclick(function () {
handleDoubleClick('tr.no-impact');
});
function handleDoubleClick(search) {
var $el = $(this);
// rest of the code
}
尝试这样做:
$('table#safe-distances-table').dblclick(function (evt) {
handleDoubleClick(evt.currentTarget);
});
function handleDoubleClick(el) {
var $el = $(el);
// rest of the code
}
您必须传递单击的元素,而不是选择器来搜索和修改。。。这不是一回事。请小心,因为此evt.currentTarget表示用户单击的元素。可能您必须捕获父元素(.parent())才能获取所有数据,但始终尝试发送事件。。。然后使用currentTarget获取单击的元素
享受吧 您正在执行.remove()而不是.hide()。。。如果要删除,请先保存数据。。。当您想要显示时,请再次创建元素。@Lkwieder,如果这是真的,为什么在我引用的jfiddle()中可以完美地工作呢同样,我在第一个jfiddle中实现了您的代码,我注意到它在表中可以完美地工作,但在h3中却不能!()在回调中,当调用传递选择器的函数时,必须使用该选择器找到元素,然后执行某些操作。。如果您传递事件,您可以准确地获得单击的元素,而不管它是否是H3、DIV等。也许您还需要做一些额外的工作来查找父元素。。。或者别的什么,你请客。另一件事是,移除和隐藏。。。你不想隐藏,因为复制粘贴的东西。尝试将数据保存在范围外的变量中,然后删除。奇怪的是,当我打开范围时,它仍然不起作用。你知道为什么吗?虽然这确实有效,但它确实与我在这里描述的另一个问题相违背()基本上,当我只隐藏元素而不删除它时,复制/粘贴到Outlook会导致隐藏的元素被放置到粘贴的电子邮件中。