在此示例中,水印插件最初不起作用,因为尚未加载div“tbFirstName”。
$(document).ready(function () {
$('#tbFirstName').watermark('Required information');
});
(.live)Jquery工具或(.on)工具似乎基于诸如“click”或“blur”之类的事件而工作。你知道我如何在将来加载的div上获得这种水印效果,而不必分配给用户事件吗?
非常感谢!
答案 0 :(得分:3)
您可以尝试DOMNodeInserted
事件:
$(document).on('DOMNodeInserted','#tbFirstName',function(){
$('#tbFirstName').watermark('Required information');
});
请注意,将on()
方法附加到与要附加的$('#tbFirstName')
元素最接近的父元素的任何元素上是很重要的,否则每次将某些内容附加到DOM时它都会运行。
同样值得注意的是,仅仅为了完成,在创建或附加时绑定watermark()
会更容易,更有效率DOM的那个元素。
参考文献:
答案 1 :(得分:2)
您始终可以在新输入创建
上调用.watermark()
$(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...