如何将此函数绑定到尚未创建的元素?

时间:2012-09-11 07:34:25

标签: jquery bind autosize

我试图让这个自动调整功能起作用。 如果我在页面加载之前创建textarea它可以正常工作:

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

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

6 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

你需要为每个新创建的textarea调用.autosize()。

或者你可以使用liveQuery一个jquery插件这是一个很棒的插件,并自动将autosize应用于每个新创建的元素。

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

答案 2 :(得分:2)

您可以尝试livequery

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

答案 3 :(得分:0)

我认为您正在寻找 .on()link

将实时事件处理程序附加到选择(无论它们是否存在)。

$(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();

答案 4 :(得分: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/

答案 5 :(得分:-1)

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

 $('.hellothere').live('click',function(){  $(this).autosize(); })