使用jquery Watermark,如何分配它还有一个尚未创建的div?

时间:2012-04-26 18:00:05

标签: jquery watermark

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

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

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

非常感谢!

价: http://code.google.com/p/jquery-watermark/

4 个答案:

答案 0 :(得分:3)

您可以尝试DOMNodeInserted事件:

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

JS Fiddle proof-of-concept

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

同样值得注意的是,仅仅为了完成,在创建附加时绑定watermark()会更容易,更有效率DOM的那个元素。

参考文献:

答案 1 :(得分:2)

您始终可以在新输入创建

上调用.watermark()

像这样example in JsBin

$(function() {

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

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

});

答案 2 :(得分:0)

尝试将代码更改为:

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

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

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

编辑:Stephan指出“live()”不起作用,我只是在你的描述中阅读相同的内容,抱歉:)

答案 3 :(得分:0)

我发现我的问题是特定于ASP.NET Update Panel的。一篇文章引导我找到了正确的答案,即使用它:

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

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

感谢所有在那里提供帮助的人 - 非常感谢。这是有用的帖子:

How to have a javascript callback executed after an update panel postback...