我将创建一个Ember组件,并需要将滚动事件绑定到动态创建的div上。
我的handlebars代码如下:
我的handlebars代码如下:
<div class="searchbarContainer" tabindex="0" bubbles=false>
{{input type="search" name="searchFor" class="searchTextField" placeholder="Search..." value=searchKey}}
{{#if searchKeyNotNull}}
<div class="searchResultsContainer box-shadow" {{bind-attr id="searchBarID"}}>
{{!-- BINDS ID TO searchBarID for searchResultsContainer--}}
{{#if noResults}} {{!-- Then say : "No Results. " --}}
<div class="applicantsName noResults">
No Results found.
</div>
{{else}}
{{!-- For each Row, include visual elements. --}}
{{#each toSearch }}
<div> ... </div>
{{/each}}
<div class='endOfResults'>
End of Results
</div>
{{/if}}
</div>
{{/if}}
</div>
根据输入部分的内容,逻辑被设置为更新searchKeyNotNull为'true'或'false',noResults也是如此。
目前,searchResultsContainer div中填充有包含结果的div,并且有最大高度。我还启用了overflow,以便用户可以滚动查看结果。
我需要将滚动事件绑定到此div,以便当它达到末尾时,触发某个操作。
现在,这是我开始使用的事件代码:
$('#searchBarID').bind('scroll',function(){
if($(this).scrollTop() + $(this).innerHeight()>=$(this)[0].scrollHeight)
{
alert('end reached');
}
});
哪个方法可以解决问题。不幸的是,当运行此代码片段时,div尚未创建,因此此事件永远不会绑定。我还尝试使用jQuery.on函数,但似乎滚动不会冒泡,因此
$('body').on('scroll','#searchBarID', function(){
if($(this).scrollTop() + $(this).innerHeight()>=$(this)[0].scrollHeight)
{
alert('end reached');
}
});
无法工作。
我已经尽力寻找解决方法了,我需要: a)找到一种将滚动条绑定到动态添加元素的方法,或者 b)找出Ember何时创建元素,以便我可以立即插入此绑定代码。
任何一种解决方案都会对我有很大帮助!