1

我正在尝试使此自动调整大小功能起作用。如果我在页面加载之前创建 textarea 它工作正常:

$(document).ready(function(){
    $('.hellothere').autosize();  
});

但是,如果我稍后在页面加载后使用 jQuery 创建 textarea,它不会绑定到这个函数,有什么帮助吗?

4

6 回答 6

2

你不能,你需要.autosize()为每个新创建的文本区域调用。如果这是事件绑定,你可以delegate(),但你正在初始化一个插件,它需要有实际的元素才能使用。

于 2012-09-11T07:36:44.223 回答
2

您需要为每个新创建的文本区域调用 .autosize()。

或者您可以使用 liveQuery 一个 jquery 插件,这是一个很棒的插件,并且自动将自动调整大小应用于每个新创建的元素。

http://docs.jquery.com/Plugins/livequery

于 2012-09-11T07:39:39.967 回答
2

你可以试试livequery

$(document).ready(function(){
    $('.hellothere').livequery(function() {
       $(this).autosize();
    });  
});
于 2012-09-11T07:40:05.050 回答
0

我认为.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();
于 2012-10-08T22:26:15.357 回答
0

要绑定尚未加载到页面上的元素,请针对您的 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+

引用者:

http://api.jquery.com/live/

于 2013-04-03T06:57:20.940 回答
-1

使用某人提供的部分答案,然后删除,这有效:

 $('.hellothere').live('click',function(){  $(this).autosize(); })
于 2012-09-11T07:44:32.180 回答