小编L2E*_*Eer的帖子

firefox + jquery mousewheel滚动事件错误

更新大卫建议的工作修复(见下文):

更换

    $('.scrollMe').bind("mousewheel DOMMouseScroll", ...) 
Run Code Online (Sandbox Code Playgroud)

同

    $('.scrollMe').bind("mousewheel DOMMouseScroll MozMousePixelScroll", ...) 
Run Code Online (Sandbox Code Playgroud)

原始邮政

Firefox 16.0.2(最新版)显示绑定"mousewheel/DOMMouseScroll"事件时的问题.当鼠标指针位于我的目标div顶部时用鼠标滚动滚动会导致窗口滚动 - 而我显然不想这样做.

我尝试添加几种方法来阻止传播等,但似乎没有任何效果.

Javascript代码:

    $(document).ready(function() {
            $('.scrollMe').bind("mousewheel DOMMouseScroll", function(e) {
                e.stopImmediatePropagation();
                e.stopPropagation();
                e.preventDefault();

                var delta = parseInt(e.originalEvent.wheelDelta || -e.originalEvent.detail);

                $(this).empty();    
                return false;
            });
    });
Run Code Online (Sandbox Code Playgroud)

要查看它的实际效果,请按照下面的jsFiddle链接.在示例页面上,只需将鼠标指针放在带有红色框的div中,然后使用鼠标滚轮.Firefox将首次(意外地)滚动父窗口,而其他浏览器则不会.

jsFiddle代码示例

奇怪的是,一旦你在绑定元素上触发事件,Firefox就不会重复这种行为,这意味着它会停止滚动页面.但是,在您手动滚动页面并再次尝试后,它会重复此行为.

我也在IE9和Chrome中测试了这个,但在这些浏览器中无法检测到这个问题(意味着它们不会意外地滚动窗口),所以我猜它是特定于Firefox的(也禁用了Firefox中的每个插件等) )

这真的是firefox中的一个错误(如果有的话,是否会出现跨浏览器的黑客攻击)?或者,如果您知道任何其他解决方案以实现捕获鼠标滚轮事件的相同效果而不使页面的窗口滚动,请随时回答!

javascript firefox jquery mousewheel

22
推荐指数
2
解决办法
2万
查看次数

linq到实体,where where子句在哪里?(内在哪里)

我有一个表与一对多映射到一个表,该表具有多个到另一个表的映射.我想做以下事情:

var results = context.main_link_table
                     .Where(l => l.some_table.RandomProperty == "myValue" &&
                            l.some_table.many_to_many_table
                             .Where(m => m.RandomProperty == "myValue"));
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?第一部分可以工作但是在没有'内部WHERE'的情况下尝试它时,我无法访问many_to_many_table的属性,但是"内在的地方"显然无法编译.我基本上想要实现类似下面的SQL查询:

SELECT * from main_link_table
INNER JOIN some_table AS t1 ON t1.association = main_link_table.association
INNER JOIN many_to_many_table AS t2 ON t2.association = some_table.association
WHERE t1.RandomProperty = 'MyValue' AND t2.RandomProperty = 'MyValue'
Run Code Online (Sandbox Code Playgroud)

它看起来很简单,但我无法找到一种方法来实现它在一行linq中 - 使用多行来实现所需的效果返回太多的结果,我最终不得不循环它们.我也试过像:

var results = main_link_tbl.Include("some_table.many_to_many_table")
                           .Where(l => l.some_table.many_to_many_table.<property>
                                       == "MyValue")
Run Code Online (Sandbox Code Playgroud)

但是在这一点上我不能选择many_to_many_table的属性,除非我添加一个FirstOrDefault(),它会使效果无效,因为它不会搜索所有记录.

什么工作,但需要多行代码,并在后台返回由linq-to-entities框架构建的SQL查询中的太多结果:

var results = db.main_link_table.Include("some_table")
                                .Include("some_table.many_to_many_table")
                                .Where(s => s.some_table.RandomProperty 
                                            == "myValue")
                                .Select(s => s.some_table);

foreach(var result in results) { …
Run Code Online (Sandbox Code Playgroud)

c# linq lambda linq-to-entities entity-framework

12
推荐指数
2
解决办法
1万
查看次数