作为我之前的问题和这个答案(https://stackoverflow.com/a/31327605/1582712)的扩展,我正在尝试调整我的JavaScript代码,因此我在其他类中使用相同的双击功能。
我的代码位于以下jfiddle
如果您尝试双击H3或表格,它们似乎不会再回来。我认为原因是因为$el
变量没有被正确注册和/或记住。
我尝试过一些事情,例如返回$el
变量并重复使用它。我尝试使用$el[search]
数组,因此每个都是唯一的。没有用。我有点难过,我认为这是一个微妙的JavaScript内存问题!
供参考: 如果您运行此jfiddle,您会看到双击一遍又一遍。我希望得到同样的效果,但推广到DOM中的任何html类/ id。
答案 0 :(得分:1)
问题是你不仅要隐藏元素,还要从DOM中删除它们(JSFiddle中的第25行)。删除后,您还会调用hide
(第17行),然后调用toggle
(第18行),但这些元素不再存在于hide
或toggle
。您可以通过删除$rowsToHide.hide();
(第17行)和$rowsToHide.remove();
(第25行)来解决问题。 See this updated JSFiddle。这将隐藏元素,但不会从DOM中删除它们。
答案 1 :(得分:1)
这是不对的:
$('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获取单击的元素。
享受!