现在我有一个滚动功能,我每次都在textArea
滚动,我有很多行,我触发textArea
所以我自动调用函数滚动。
当前代码;
var textArea = $('textArea');
if(a) {
textArea.append(msg.a);
scroll();
}
if(b) {
textArea.append(msg.b);
scroll();
}
所以我有很多scroll()
是否可以在te变量中进行调用,因此每次自动调用textArea都会执行滚动操作,因此我不需要将其放在每个函数中。
答案 0 :(得分:0)
当然有可能,但可能不太明智。如果您必须将文本附加到文档中,该怎么办?在这种情况下,你想在整个页面上调用滚动吗?无论如何,扩展jQuery函数(如append()
)的功能非常容易。以下是使用现有方案的示例:
// modify jQuery functionality
(function($){
// replacing old append
var old = $.fn.append;
$.fn.append = function()
{
var ret = old.apply(this, arguments);
// lets keep some sanity here and check
// if it's a textarea or not first
if($(this).is('textarea')) {
$(this).myScroll();
}
return ret;
};
// new scroll function
$.fn.extend({
myScroll: function() {
return this.each(function() {
$(this).scrollTop(this.scrollHeight);
});
}
});
})(jQuery);
// meat and potatos
var textArea = $('textArea');
for(var i = 0; i < 20; i++) {
setTimeout(function(){
textArea.append('Some genereic text for testing purposes');
}, 500 * i);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea style="width: 200px; height: 100px; overflow-y: scroll;"></textarea>
它的基本功能是将旧函数保存在变量(old
)中,调用它,添加逻辑并返回结果。我还添加了一个jQuery myScroll()
函数来标准化它。