我使用jquery弹性插件来扩展文本框。它工作得很好,但我想在使用ajax添加到DOM的文本框中使用它,但不幸的是这个插件没有实时内置函数。
有办法解决这个问题吗?
答案 0 :(得分:4)
使用jQuery 1.4,您可以这样做:
$("textarea").live("focus", function() {
$(this).elastic().die("focus");
});
jQuery 1.3.x不支持live()的焦点事件,所以它有点棘手:
$("textarea").live("keydown", elasticize).live("mousedown", elasticize);
function elasticize() {
$(this).elastic().die("keydown").die("mousedown");
}
die
调用是有弹性的,每个textarea只调用一次。
答案 1 :(得分:4)
如果您可以控制textarea创建,那么只需在textarea创建后调用.elastic()
:
// In whatever AJAX callback creates the textarea...
var newTextarea = $('<textarea></textarea>');
// Append the element to the DOM wherever it belongs...
parentElement.append(newTextarea);
// Add elastic behavior.
newTextarea.elastic();
答案 2 :(得分:0)
其他答案建议销毁焦点处理程序,但这可能会破坏其他依赖项。
相反,您可以使用class =“elastic”标记textarea。弹性初始化后,您可以删除“弹性”类以避免重复出现。
$(document)
.on('focus','textarea.elastic',function(e) {
$(this).removeClass('elastic').elastic();
})