0

動的に追加された要素には適用されない、最初の実行後に追加された要素に対してjquery関数を機能させる方法。

コード:

jQuery(function() {
   jQuery.support.placeholder = false;
   test = document.createElement('input');
   if('placeholder' in test) jQuery.support.placeholder = true;
});

$(function() {
   var active = document.activeElement;
   if(!$.support.placeholder) { 
      $(':text').focus(function () {
         if ($(this).attr('placeholder') != '' && $(this).val() == $(this).attr('placeholder')) {
            $(this).val('');
            if($(this).hasClass("dcphc")===true){$(this).removeClass('dcph');}
            else if($(this).hasClass("dcphmgc")===true){$(this).removeClass('dcphmg');}
            else if($(this).hasClass("dcphlgc")===true){$(this).removeClass('dcphlg');}
         }
      }).blur(function () {
         if ($(this).attr('placeholder') != '' && ($(this).val() == '' || $(this).val() == $(this).attr('placeholder'))) {
            $(this).val($(this).attr('placeholder'));
            if($(this).hasClass("dcphc")===true){$(this).addClass('dcph');}
            else if($(this).hasClass("dcphmgc")===true){$(this).addClass('dcphmg');}
            else if($(this).hasClass("dcphlgc")===true){$(this).addClass('dcphlg');}
         }
      });
      }
      else{
        $(':text').blur(function () {
         if ($(this).attr('placeholder') != '' && ($(this).val() == '' || $(this).val() == $(this).attr('placeholder'))) {
            $(this).val("");
         }
      }); 
      }
      $(':text').blur();
      $(active).focus();
});

function ref_dcph(w){
      var active = document.activeElement;
      if(!$.support.placeholder) { 
      $(w).focus(function () {
         if ($(this).attr('placeholder') != '' && $(this).val() == $(this).attr('placeholder')) {
            $(this).val('');
            if($(this).hasClass("dcphc")===true){$(this).removeClass('dcph');}
            else if($(this).hasClass("dcphmgc")===true){$(this).removeClass('dcphmg');}
            else if($(this).hasClass("dcphlgc")===true){$(this).removeClass('dcphlg');}
         }
      }).blur(function () {
         if ($(this).attr('placeholder') != '' && ($(this).val() == '' || $(this).val() == $(this).attr('placeholder'))) {
            $(this).val($(this).attr('placeholder'));
            if($(this).hasClass("dcphc")===true){$(this).addClass('dcph');}
            else if($(this).hasClass("dcphmgc")===true){$(this).addClass('dcphmg');}
            else if($(this).hasClass("dcphlgc")===true){$(this).addClass('dcphlg');}
         }
      });
      }
      else{
        $(w).blur(function () {
         if ($(this).attr('placeholder') != '' && ($(this).val() == '' || $(this).val() == $(this).attr('placeholder'))) {
            $(this).val("");
         }
      }); 
      }
      $(w).blur();
      $(active).focus();
}

最初の関数が機能し、2 番目の ref_dcph (参照 DOM コントロール プレース ホルダー) は最初の関数のコピーですが、input または textarea 以外の特定の識別子を持つ新しい要素を追加するたびに使用します。関数が既にアタッチされているアイテムのバインドを解除する必要はありません。

新しい動的要素でも実行するには、最初のものをひねる必要があります。「on」の使用方法がわかりません。

-- また、dom から削除され、再度追加された要素 (同じ ID を持つ - 同じ要素でもある) はどうなるでしょうか? $(elem).click(関数(){}); バインドを解除する必要があります-そうしないと、クリックが2倍になります。

最初のツイストを作成する方法と、以前の focus() または blur() が動的に生成されたものとして検出されている同じ要素にアタッチされているかどうかを確認する方法を知り、その場合は再度 focus() をアタッチしないでください。ぼかし()。dom から削除されてから再度追加される要素がページにあるため、入力またはプレースホルダー付きのテキストエリアが含まれます。

4

1 に答える 1

0
          $("body").on("blur", ":text", function(event){});
于 2012-08-31T14:37:14.280 に答える