使函数适用于使用ajax动态添加的元素

时间:2012-08-31 14:05:15

标签: jquery jquery-plugins jquery-selectors

如何使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();
}

第一个功能完成工作,第二个功能是ref_dcph(参考dom控制占位符) 是第一个的副本,但我每次添加具有除输入或textarea之外的特定标识符的新元素时都使用它,这样我就不必对已经附加了该功能的项目进行解除绑定。 / p>

我需要在第一个上进行扭曲,以便在新的动态元素上运行,我不明白如何使用“on”。

- 此外,从dom中删除并再次添加的元素会发生什么(具有相同的id - 同样也是相同的元素) - 我注意到单击处理程序是否要执行$(elem).click(函数( ){});你必须通过解除绑定 - 否则点击加倍。

我想知道如何进行第一次扭转并检查先前的focus()或blur()是否附加到被检测为动态生成的同一元素上,如果是这种情况则不再附加焦点()和模糊()。因为我在页面上有从dom中删除的元素,然后再次添加涉及输入或带占位符的textarea。

1 个答案:

答案 0 :(得分:0)

          $("body").on("blur", ":text", function(event){});