我正在尝试使此自动调整大小功能起作用。如果我在页面加载之前创建 textarea 它工作正常:
$(document).ready(function(){
$('.hellothere').autosize();
});
但是,如果我稍后在页面加载后使用 jQuery 创建 textarea,它不会绑定到这个函数,有什么帮助吗?
你不能,你需要.autosize()
为每个新创建的文本区域调用。如果这是事件绑定,你可以delegate()
,但你正在初始化一个插件,它需要有实际的元素才能使用。
您需要为每个新创建的文本区域调用 .autosize()。
或者您可以使用 liveQuery 一个 jquery 插件,这是一个很棒的插件,并且自动将自动调整大小应用于每个新创建的元素。
你可以试试livequery
$(document).ready(function(){
$('.hellothere').livequery(function() {
$(this).autosize();
});
});
我认为.on()是您正在寻找的:链接
将实时事件处理程序附加到选择(无论它们是否存在)。
$(function(){
// Attach a listener to all paragraphs
$('body').on(('click', 'p', function(event){
$(this).css('color', 'blue');
});
// Dynamically add a paragraph
$('body').append('<p>Hello World!</p>');
});
但是,既然您无论如何都在使用 jQuery 添加 textarea,为什么不在插入后立即调用.autosize()呢?
$('body').append('<textarea class="hellothere"></textarea>').autosize();
要绑定尚未加载到页面上的元素,请针对您的 jQuery 版本使用其中之一。
$("a.offsite").live("click", function(){ alert("Goodbye!"); }); // jQuery 1.3+
$(document).delegate("a.offsite", "click", function(){ alert("Goodbye!"); }); // jQuery 1.4.3+
$(document).on("click", "a.offsite", function(){ alert("Goodbye!"); }); // jQuery 1.7+
引用者:
使用某人提供的部分答案,然后删除,这有效:
$('.hellothere').live('click',function(){ $(this).autosize(); })