是否可以在Jquery/Javascript中捕获除$(document)之外的元素上的scrollstart?
我正在尝试使用这个插件,它是一个用于溢出的polyfill:移动设备上的auto。样品 我的问题: 如何在可滚动的div.element上检测scrollstart/scrollstop?这是可能的,还是scroll/scrollstart/scrollstop事件只在$document上工作 具体地说,如果我的页面上有两个面板,它们都是可滚动的,有什么方法可以实现这一点:是否可以在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
$(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个元素和过滤器。@我不明白你的意思。