分离函数时变量不记得自己
Variable Not Remembering Itself When Separating Functions
作为我之前的问题和这个答案的扩展(https://stackoverflow.com/a/31327605/1582712),我试图调整我的JavaScript代码,所以我在其他类中使用相同的双击功能。
我的代码如下jfiddle
如果你尝试双击H3或表,它们似乎不会回来。我认为原因是因为$el
变量没有被正确注册和/或记住。
我已经尝试了一些事情,例如返回$el
变量并重用它。我尝试使用$el[search]
数组,所以每个都是唯一的。没有工作。我有点难住了,我认为这是一个微妙的JavaScript内存问题!
供参考:如果你运行这个jfiddle,你会看到双击一遍又一遍地工作。我希望得到同样的效果,但推广到任何html类/id在DOM。
问题是,您不仅隐藏了元素,而且还从DOM中删除了它们(JSFiddle中的第25行)。删除它们后,您还调用hide
(第17行),然后调用toggle
(第18行),但这些元素不再存在于hide
或toggle
。您可以通过删除$rowsToHide.hide();
(第17行)和$rowsToHide.remove();
(第25行)来解决这个问题。请看这个更新过的JSFiddle。这将隐藏元素,但不会从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
}
你必须传递被点击的元素,而不是一个选择器来搜索和修改…这不是一回事。要小心,因为这种事会发生。currentttarget表示用户单击的元素。也许你必须捕获父元素(.parent())以获得所有数据,但总是尝试发送事件…然后使用currentttarget获取被点击的元素。
享受吧!
- 如何通过自己获得Chrome扩展的用户反馈/错误报告
- 按我自己的类克隆另一个元素的内容和顺序
- 如何配置分析以将数据发送到我自己的服务器
- 如何使用jquery ajax和jsonp在您自己的域上读取json数据
- 创造自己的智能
- 让自己在文章中成为社交明星's内容高度
- 如何在Win8Metro应用程序的Javascript代码中捕获自己的C#事件
- 从自己的安全系统中重新找回自己
- 麻烦将coffee脚本片段移动到rails中自己的类中
- 试图创建一个24小时计时器来重置自己
- 从我自己的脚本中包含的Javascript文件中调用一个函数
- 让我自己的过滤器不工作
- 消隐数组元素是否生成自己的属性
- JavaScript子对象访问自己的值
- Selenium异步脚本在自己的线程中阻塞其他脚本
- 为什么对象的函数值没有自己的作用域
- 我怎样才能给数组中的每个对象赋予它们自己的键
- 制作我自己的加密/解密系统
- 我如何才能使数组中的按钮只对其作出响应'使用javascript的自己的包装器
- 分离函数时变量不记得自己