首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使函数适用于使用ajax动态添加的元素

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

Stack Overflow用户
提问于 2012-08-31 22:05:15
回答 1查看 160关注 0票数 0

如何使jquery函数适用于第一次运行后添加的元素,这不适用于动态添加的元素。

代码:

代码语言:javascript
运行
复制
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控件占位符)是第一个的副本,但我每次添加具有特定标识符的新元素时都会使用它,这样我就不必对函数已经附加到的项进行解除绑定。

我需要对第一个进行一些调整,才能在新的dynamycally元素上运行,我不知道如何使用" on“。

--还有,从dom中删除并重新添加的元素会发生什么情况(具有相同id的元素-也是相同的元素)-我注意到,如果您想执行$(Elem)函数(.click(){}),那么使用click处理程序会发生什么;您必须解除绑定-否则点击会加倍。

我想知道如何进行第一次扭曲,并检查之前的focus()或blur()是否附加到被检测为动态生成的同一元素,如果是这样,则不要再附加focus()和blur()。因为页面上的元素会从dom中删除,然后重新添加,这些元素涉及到带有占位符的输入或文本区域。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-31 22:37:14

代码语言:javascript
运行
复制
          $("body").on("blur", ":text", function(event){});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12217006

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档