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 に何かが追加されるたびにメソッドが実行されます。

補足として、その要素を DOM にwatermark()作成または追加する際に をバインドする方がはるかに簡単で効率的であることにも注意してください。

参考文献:

于 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

問題が ASP.NET Update Panel に固有のものであることを発見しました。投稿により、これを使用するという正しい答えが得られました。

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

$(document).ready 関数の代わりに。

そこに助けを提供してくれたすべての人に感謝します-感謝します。役立つ投稿は次のとおりです。

更新パネルのポストバック後に JavaScript コールバックを実行する方法...

于 2012-04-26T21:53:04.763 に答える
0

コードを次のように変更してみてください:

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

理由は、要素がまだ存在しないため、バインディングが機能しないためです。「ライブ」API は、イベントを要素に動的にバインドするために使用されます。

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

編集:Stephanは「live()」が機能しないことを指摘しました。申し訳ありませんが、あなたの説明で同じことを読んだだけです:)

于 2012-04-26T18:04:06.537 に答える