0

在这个示例中,水印插件最初不起作用,因为 div "tbFirstName" 尚未加载。

$(document).ready(function () {
         $('#tbFirstName').watermark('Required information');
});

(.live) Jquery 工具或 (.on) 工具似乎基于诸如“单击”或“模糊”之类的事件工作。您知道如何在将来加载的 div 上获得这种水印效果,而不必分配给用户事件吗?

非常感谢!

参考: http ://code.google.com/p/jquery-watermark/

4

4 回答 4

3

你可以试试这个DOMNodeInserted事件:

$(document).on('DOMNodeInserted','#tbFirstName',function(){
    $('#tbFirstName').watermark('Required information');
});

JS Fiddle 概念验证

请注意,将on()方法附加到最接近要附加$('#tbFirstName')元素的父元素的任何元素上很重要,否则每次将某些内容附加到 DOM 时它都会运行。

还值得注意的是,为了完成,将创建附加该元素的watermark()同时绑定到 DOM 会更容易、更有效。

参考:

于 2012-04-26T18:04:05.380 回答
2

您可以随时调用.watermark()新的输入创建

JsBin 中的这个例子

$(function() {

  $(".watermark").watermark("Write something...");

  $(".btn-add").click(function() {
    $(".list").append('<li><input type="text" class="watermark" /></li>');
    $(".watermark").watermark("Write something...");
  });

});
于 2012-04-26T18:23:11.767 回答
0

尝试将您的代码更改为:

$(document).ready(function () {
         $('#tbFirstName').live("watermark", function(){ 
            $('#tbFirstName').html("required info");
        });
});

原因,由于元素不存在,绑定不起作用。“live” api 用于将事件动态绑定到元素。

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

编辑:斯蒂芬指出“live()”不起作用,我只是在您的描述中读到相同的内容,抱歉:)

于 2012-04-26T18:04:06.537 回答
0

我发现我的问题是特定于 ASP.NET 更新面板的。一个帖子让我找到了正确的答案,那就是使用它:

function pageLoad(sender, args) { 
    ... 
}

而不是 $(document).ready 函数。

感谢所有提供帮助的人——非常感谢。这是有用的帖子:

如何在更新面板回发后执行 javascript 回调...

于 2012-04-26T21:53:04.763 回答