0

HTML

<a href="javascript:;">UPDATE</a>

Jクエリ

$(document).ready(function(){
  var b = '<input type="text" name="fullname"><br>'+
          '<input type="text" name="email">';
  $('a').click(function(){
    $("a ~ input, a ~ br").remove();
    $("body").append(b);
  });
  $('input').on({
    focus: function(){
      $(this).css("background","#ccc");
    },
    blur: function(){
      $(this).css("background","#fff");
    }
  });
});

入力を動的に生成している間、.on() イベントが機能しません。

4

5 に答える 5

4

それは使用方法ではありません.on()。次のようになります。

$('body').on('focus', 'input', function(){
    $(this).css("background","#ccc");
});

ロード時にページ上にすでに存在する要素にイベントをバインドする必要があります。

詳細については、こちらをご覧ください

于 2013-05-28T06:58:25.443 に答える
2

使用する

$(document).on("focus", "input",  function(){
      $(this).css("background","#ccc");
});
... analog for blur event

ドキュメントには、次の関数on()があります。

.on( イベント [, セレクター] [, データ], ハンドラー(イベントオブジェクト) )

documentしたがって、これらのパラメーターを使用して、すべての入力へのフォーカスを検出します。

  • events: "集中"
  • selector:「入力」

直接および委任されたイベント

セレクターが提供されている場合、イベント ハンドラーは委任されていると呼ばれます。イベントがバインドされた要素で直接発生した場合、ハンドラーは呼び出されませんが、セレクターに一致する子孫 (内部要素) に対してのみ呼び出されます。jQuery は、イベント ターゲットからハンドラーがアタッチされている要素 (つまり、最も内側の要素から最も外側の要素) までイベントをバブルし、セレクターに一致するそのパスに沿ったすべての要素に対してハンドラーを実行します。

イベント ハンドラーは、現在選択されている要素にのみバインドされます。これらは、コードが を呼び出す時点でページに存在している必要があります .on()。要素が存在し、選択できることを確認するには、ページの HTML マークアップにある要素のドキュメント対応ハンドラー内でイベント バインディングを実行します。

新しい HTML がページに挿入されている場合は、要素を選択し、新しい HTML がページに配置された後にイベント ハンドラーを添付します。または、次に説明するように、委任されたイベントを使用してイベント ハンドラーをアタッチします。

[ドキュメントページで詳細を読む]

于 2013-05-28T06:58:46.957 に答える
0
$('body').on( eventName, selector, function(){} );

on() 関数をチェックする

例えば

$("input").on("blur", function(){
   $(this).css("background","#fff");
});
于 2013-05-28T07:02:43.380 に答える