我也试图了解如何制作一个活的 jquery 插件,我认为这将是一个很好的例子。
我正在尝试开发的这个插件是一种用于 textarea 的 autoGrow,到目前为止效果很好,但它不适用于实时内容。
http://jsfiddle.net/denislexic/cPBgG/10/
我猜这是因为each
which 没有直播,但我不知道如何绕过它。我经常遇到这个问题,我找不到解决方案。
任何帮助表示赞赏,谢谢。
这是代码
$.fn.autogrow = function(options) {
this.filter('textarea').each(function() {
var $this = $(this),
minHeight = $this.height(),
lineHeight = $this.css('lineHeight');
$(this).css('height','hidden');
var duplicate = $('<div></div>').css({
position: 'absolute',
top: -10000,
left: -10000,
width: $(this).width(),
fontSize: $this.css('fontSize'),
fontFamily: $this.css('fontFamily'),
lineHeight: $this.css('lineHeight'),
resize: 'none'
}).appendTo(document.body);
var update = function() {
var val = this.value.replace(/</g, '<')
.replace(/>/g, '>')
.replace(/&/g, '&')
.replace(/\n/g, '<br/>');
duplicate.html(val);
$(this).css('height', Math.max(duplicate.height() + 20, minHeight));
}
$(this).change(update).keyup(update).keydown(update);
update.apply(this);
});
return this;
}