Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 分离函数时不记得自身的变量_Javascript_Jquery_Html_Css_Scope - Fatal编程技术网

Javascript 分离函数时不记得自身的变量

Javascript 分离函数时不记得自身的变量,javascript,jquery,html,css,scope,Javascript,Jquery,Html,Css,Scope,作为对上一个问题和这个答案()的扩展,我试图调整JavaScript代码,以便在其他类中使用相同的双击功能 我的代码如下 如果您尝试双击H3或表格,它们似乎不会返回。我认为原因是,$el变量没有正确注册和/或记忆 我尝试了一些方法,比如返回$el变量并重用它。我尝试为$el[search]使用一个数组,因此每个数组都是唯一的。没有一个奏效。我有点困惑,我认为这是一个微妙的JavaScript内存问题 供参考: 如果你运行这个程序,你会看到双击一次又一次的工作。我希望获得相同的效果,但将其推广到D

作为对上一个问题和这个答案()的扩展,我试图调整JavaScript代码,以便在其他类中使用相同的双击功能

我的代码如下

如果您尝试双击H3或表格,它们似乎不会返回。我认为原因是,
$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会导致隐藏的元素被放置到粘贴的电子邮件中。