背景:
我正在编写一个在点击时打开子菜单的组件。我不知道该组件将放置在页面上的什么位置,也不知道它在可能设置了 overflow 属性的区域中嵌套多远。
考虑到溢出可能会剪切子菜单,我改为将子菜单本身附加到 body 上,给它一个绝对位置,并通过代码将其链接到原始组件。这解决了溢出问题。
问题:
但是,如果用户滚动,子菜单将保留在原位,而不是与其链接的组件一起移动,因此我需要能够监听页面上发生的任何和所有滚动事件这样我就可以适本地重新定位子菜单。
如果有一种简单的方法来监听所有滚动事件,或者如果有另一种更好的方法来执行此组件,我将不胜感激。
我玩过 JSFiddle 并设置了一个 sandbox但我没有取得任何成功,也没有在这个网站或其他任何地方找到答案;虽然也许我使用了错误的搜索词,但我无法想象我是第一个提出这个问题的人。
编辑
为了解决势均力敌的投票问题,我不会在不提供代码的情况下寻求帮助来调试问题,也不会在将来寻求对任何人都没有帮助的问题。我想问的是,我将如何去聆听某种类型的所有事件,而不管这些事件可能发生在哪里,我发现这在全局范围内都适用,尽管这可能是主观的。
编辑
$(window).on('滚动', function(){/**/});
不是一个选项,因为它只听窗口滚动,而不是任何嵌套的滚动。
$('#ex1 #ex2').on('scroll', function(){/**/}); 不是一个选项,因为它需要实现用于了解页面上可能滚动的任何当前或 future 可能区域的代码。
最佳答案
您应该能够附加一个带有第三个参数 true 的文档级监听器,以捕获所有元素上的滚动事件。这是它的样子:
document.addEventListener('scroll', function(e){ }, true);
末尾的 true 是重要的部分,它告诉浏览器在调度时捕获事件,即使该事件通常不会冒泡,如更改、聚焦和滚动。
这是一个例子:http://jsbin.com/sayejefobe/1/edit?html,js,console,output
关于javascript - 监听页面上的所有滚动事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24270036/
我试图获取一个长度在1到10之间的字符串,并输出将字符串分解为大小为1、2或3的连续子字符串的所有可能方式。例如:输入:123456将整数分割成单个字符,然后继续查找组合。该代码将返回以下所有数组。[1,2,3,4,5,6][12,3,4,5,6][1,23,4,5,6][1,2,34,5,6][1,2,3,45,6][1,2,3,4,56][12,34,5,6][12,3,45,6][12,3,4,56][1,23,45,6][1,2,34,56][1,23,4,56][12,34,56][123,4,5,6][1,234,5,6][1,2,345,6][1,2,3,456][123
当我的预订模型通过rake任务在状态机上转换时,我试图找出如何跳过对ActiveRecord对象的特定实例的验证。我想在reservation.close时跳过所有验证!叫做。希望调用reservation.close!(:validate=>false)之类的东西。仅供引用,我们正在使用https://github.com/pluginaweek/state_machine用于状态机。这是我的预订模型的示例。classReservation["requested","negotiating","approved"])}state_machine:initial=>'requested
我有这个html标记:我想得到这个:我如何使用Nokogiri做到这一点? 最佳答案 require'nokogiri'doc=Nokogiri::HTML('')您可以通过xpath删除所有属性:doc.xpath('//@*').remove或者,如果您需要做一些更复杂的事情,有时使用以下方法遍历所有元素会更容易:doc.traversedo|node|node.keys.eachdo|attribute|node.deleteattributeendend 关于ruby-Nokog
我想获取模块中定义的所有常量的值:moduleLettersA='apple'.freezeB='boy'.freezeendconstants给了我常量的名字:Letters.constants(false)#=>[:A,:B]如何获取它们的值的数组,即["apple","boy"]? 最佳答案 为了做到这一点,请使用mapLetters.constants(false).map&Letters.method(:const_get)这将返回["a","b"]第二种方式:Letters.constants(false).map{|c
是否有简单的方法来更改默认ISO格式(yyyy-mm-dd)的ActiveAdmin日期过滤器显示格式? 最佳答案 您可以像这样为日期选择器提供额外的选项,而不是覆盖js:=f.input:my_date,as::datepicker,datepicker_options:{dateFormat:"mm/dd/yy"} 关于ruby-on-rails-事件管理员日期过滤器日期格式自定义,我们在StackOverflow上找到一个类似的问题: https://s
我正在尝试将以下SQL查询转换为ActiveRecord,它正在融化我的大脑。deletefromtablewhereid有什么想法吗?我想做的是限制表中的行数。所以,我想删除少于最近10个条目的所有内容。编辑:通过结合以下几个答案找到了解决方案。Temperature.where('id这给我留下了最新的10个条目。 最佳答案 从您的SQL来看,您似乎想要从表中删除前10条记录。我相信到目前为止的大多数答案都会如此。这里有两个额外的选择:基于MurifoX的版本:Table.where(:id=>Table.order(:id).
require'mechanize'agent=Mechanize.newlogin=agent.get('http://www.schoolnet.ch/DE/HomeDE.htm')agent.clicklogin.link_withtext:/Login/然后我得到Mechanize::UnsupportedSchemeError。 最佳答案 Mechanize不支持javascript但您可以将搜索字段添加到表单并为其分配搜索词并使用mechanize提交表单form=page.forms.firstform.add_fie
我们有一个字符串:“”这个正则表达式://i如何从当前字符串中获取所有匹配项? 最佳答案 "".scan(//)参见scan在ruby-docs上 关于ruby-如何遍历Ruby中所有正则表达式匹配的字符串?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/6857852/
是否可以在所有delayed_job任务之前运行一个方法?基本上,我们试图确保每个运行delayed_job的服务器都有我们代码的最新实例,所以我们想运行一个方法来在每个作业运行之前检查它。(我们已经有了“check”方法并在别处使用它。问题只是关于如何从delayed_job中调用它。) 最佳答案 现在有一种官方方法可以通过插件来做到这一点。这篇博文通过示例清楚地描述了如何执行此操作http://www.salsify.com/blog/delayed-jobs-callbacks-and-hooks-in-rails(本文中描述
我遇到了一个非常奇怪的问题,我很难解决。在我看来,我有一个与data-remote="true"和data-method="delete"的链接。当我单击该链接时,我可以看到对我的Rails服务器的DELETE请求。返回的JS代码会更改此链接的属性,其中包括href和data-method。再次单击此链接后,我的服务器收到了对新href的请求,但使用的是旧的data-method,即使我已将其从DELETE到POST(它仍然发送一个DELETE请求)。但是,如果我刷新页面,HTML与"new"HTML相同(随返回的JS发生变化),但它实际上发送了正确的请求类型。这就是这个问题令我困惑的