jQuery live() 函数,用于大量使用 ajax 的站点



我一直在寻找一种方法来确保在通过jQuery加载将内容加载到页面和页面中时相应地触发所有脚本。

到目前为止,最好的方法是实时函数,但我无法让它在加载时触发函数,只能在加载元素的情况下运行。

例如。

$(document).ready(function(){
    $('textarea').live('keyup',function(){
        $(this).innerHeight(20 + (16 * ($(this).prop('scrollHeight') / $(this).css('line-height').replace('px', '') - 1.25)));
    });
    $('textarea').trigger('keyup');
});

这将使文本区域在键控功能上正确执行,但不会触发初始$('textarea').keyup();

我将如何做到这一点/有没有更好的方法来实现我所追求的目标。

我已经做到了这一点,但是一旦页面加载,我的初始调用就不起作用:

$(document).ready(function(){
    $(document).on('keyup', 'textarea',function(){
        $(this).innerHeight(20 + (16 * ($(this).prop('scrollHeight') / $(this).css('line-height').replace('px', '') - 1.25)));
    });
    $('textarea').trigger('keyup');
});

首先,您希望使用 trigger() 来触发事件。

另外,不要使用 live(),因为它已弃用。而是使用 on() .语法略有变化:

$(document).ready(function(){
    $(document).on('keyup', 'textarea', function(){
        $(this).innerHeight(20 + (16 * ($(this).prop('scrollHeight') / $(this).css('line-height').replace('px', '') - 1.25)));
    });
    $('textarea').trigger('keyup');
});

$(document).on('keyup', 'textarea', function)中的选择器的工作原理如下:

  1. document中查找与textarea匹配的元素(这也适用于页面加载后添加的元素)
  2. 如果触发keyup事件,则执行回调方法

因此,您可以编写比document更具体的内容来减少计算时间。例如:

$('#myForm').on('keyup', 'textarea', function)

Alp 的响应非常有效。 处理程序会在您使用trigger()时触发,所以我不明白您从哪里得到错误。

确保在加载要填充文本区域的任何动态内容触发文本区域上的键控。 如果您使用 jQuery 的load()引入内容,请在回调函数中触发 keyup。

JS小提琴

相关内容

  • 没有找到相关文章

最新更新