代码之家  ›  专栏  ›  技术社区  ›  DaveDev

如何将$(document).ready函数应用于异步加载的元素?

  •  3
  • DaveDev  · 技术社区  · 14 年前

    我有下面的函数,它将水印文本应用于id为的页面上的任何文本框 "Search" :

    jQuery(document).ready(function ($) {
    
        $("#Search").watermark({
            watermarkClass: 'watermarkOn',
            defaultText: $("#Search").attr("watermarkText")
        });
    });
    

    jQuery(document).ready 已经启动的函数。

    我能做些什么来确保异步加载的文本框应用了这个函数吗?谢谢。

    2 回复  |  直到 14 年前
        1
  •  3
  •   user113716    14 年前

    $(selector).load() ,然后呼叫 .watermark() 在回调中。

    $('someSelector').load('/some/path', function( response ) {
        $('someNewElement').find('input').watermark({
            watermarkClass: 'watermarkOn',
            defaultText: $("#Search").attr("watermarkText")
        });
    });
    

    var options = {
               watermarkClass: 'watermarkOn',
               defaultText: $("#Search").attr("watermarkText")
              };
    
    $("#Search").watermark( options );
    
    $('someSelector').load('/some/path', function( response ) {
        $('someNewElement').find('input').watermark( options );
    });
    
        2
  •  0
  •   Moin Zaman    14 年前

    查一下 .live() 方法将事件异步绑定到以前或将来创建的元素(如您的情况)。

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

    有可能改变 watermark 必须使用的插件/方法

    .live() 只适用于事件,不允许将插件附加到将来创建的元素。

    你可以看看 liveQuery

    如。

    //initiate the watermark plugin on all elements with class 'search' existing now or created in the future.
        $('.Search').livequery(function() {
            $(this).watermark({
                watermarkClass: 'watermarkOn',
                defaultText: $("#Search").attr("watermarkText")
            });
        });