Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.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
是否可以在Jquery/Javascript中捕获除$(document)之外的元素上的scrollstart?_Javascript_Jquery_Jquery Mobile_Scroll_Jquery Events - Fatal编程技术网

是否可以在Jquery/Javascript中捕获除$(document)之外的元素上的scrollstart?

是否可以在Jquery/Javascript中捕获除$(document)之外的元素上的scrollstart?,javascript,jquery,jquery-mobile,scroll,jquery-events,Javascript,Jquery,Jquery Mobile,Scroll,Jquery Events,我正在尝试使用这个插件,它是一个用于溢出的polyfill:移动设备上的auto。样品 我的问题: 如何在可滚动的div.element上检测scrollstart/scrollstop?这是可能的,还是scroll/scrollstart/scrollstop事件只在$document上工作 具体地说,如果我的页面上有两个面板,它们都是可滚动的,有什么方法可以实现这一点: $(document).on('scrollstart','div:jqmData(panel="main"), div

我正在尝试使用这个插件,它是一个用于溢出的polyfill:移动设备上的auto。样品

我的问题: 如何在可滚动的div.element上检测scrollstart/scrollstop?这是可能的,还是scroll/scrollstart/scrollstop事件只在$document上工作

具体地说,如果我的页面上有两个面板,它们都是可滚动的,有什么方法可以实现这一点:

 $(document).on('scrollstart','div:jqmData(panel="main"), div:jqmData(panel="menu")'), function() {
    console.log("scroll detected");
    });
编辑: 我的HTML如下所示:

<html class="ui-popover-mode">
// OR depending on screen size
<html class="ui-splitview-mode">
   // panel 1
   <div data-panel="main" class="ui-panel">
       <div data-role="page" class="ui-page" id="mainOne">
           <div data-role="content" class="ui-content"></div>
       </div>
       <div data-role="page" class="ui-page" id="mainTwo">
           <div data-role="content" class="ui-content"></div>
       </div>
   </div>
   // panel 2
   <div data-panel="menu" class="ui-panel">
       <div data-role="page" class="ui-page" id="menuOne">
           <div data-role="content" class="ui-content"></div>
       </div>
       <div data-role="page" class="ui-page" id="menuTwo">
           <div data-role="content" class="ui-content"></div>
       </div>
   </div>
   // panel 3
   <div data-panel="pop" class="ui-panel">
       <div data-role="page" class="ui-page" id="popOne">
           <div data-role="content" class="ui-content"></div>
       </div>
       <div data-role="page" class="ui-page" id="popTwo">
           <div data-role="content" class="ui-content"></div>
       </div>
   </div>
</html>
$('.ui-content').on('scrollstart', function() {
        // check here if .ui-content is on the correct panel
    });
同意这很复杂,不起作用。但它只将事件附加到必要的元素上。现在我这样做:

<html class="ui-popover-mode">
// OR depending on screen size
<html class="ui-splitview-mode">
   // panel 1
   <div data-panel="main" class="ui-panel">
       <div data-role="page" class="ui-page" id="mainOne">
           <div data-role="content" class="ui-content"></div>
       </div>
       <div data-role="page" class="ui-page" id="mainTwo">
           <div data-role="content" class="ui-content"></div>
       </div>
   </div>
   // panel 2
   <div data-panel="menu" class="ui-panel">
       <div data-role="page" class="ui-page" id="menuOne">
           <div data-role="content" class="ui-content"></div>
       </div>
       <div data-role="page" class="ui-page" id="menuTwo">
           <div data-role="content" class="ui-content"></div>
       </div>
   </div>
   // panel 3
   <div data-panel="pop" class="ui-panel">
       <div data-role="page" class="ui-page" id="popOne">
           <div data-role="content" class="ui-content"></div>
       </div>
       <div data-role="page" class="ui-page" id="popTwo">
           <div data-role="content" class="ui-content"></div>
       </div>
   </div>
</html>
$('.ui-content').on('scrollstart', function() {
        // check here if .ui-content is on the correct panel
    });
因此,我现在有很多不必要的绑定,只在检测到事件后检查绑定是否正确,而不是相反,我只将事件附加到所需的元素


这就是我想知道的

您可以直接选择元素并附加滚动事件。简单例子

$("#selector").on('scrollstart', function() {
    //...do stuff
});

您可以直接选择元素并附加滚动事件。简单例子

$("#selector").on('scrollstart', function() {
    //...do stuff
});

奇怪的当我直接以元素为目标时,它可以工作,但如果我构造一个更复杂的选择器,如$'。模式选择器'@frequency,您尝试的事件委派附加到文档,它可能会导致歧义。我知道,我仍然有三种类型的面板,它们可以像这样滚动,我只想绑定到两种类型。。。好啊我将尝试检测并检查它来自哪个面板。谢谢好啊让它发挥作用。但仍然在想,现在我在检测到scrollstart和立即附加到2个元素后附加到10个元素和过滤器。@频繁,我不明白你的意思。奇怪。当我直接以元素为目标时,它可以工作,但如果我构造一个更复杂的选择器,如$'。模式选择器'@frequency,您尝试的事件委派附加到文档,它可能会导致歧义。我知道,我仍然有三种类型的面板,它们可以像这样滚动,我只想绑定到两种类型。。。好啊我将尝试检测并检查它来自哪个面板。谢谢好啊让它发挥作用。但仍然在想,现在我在检测到scrollstart和立即附加到2个元素后附加到10个元素和过滤器。@我不明白你的意思。