2012-08-31 44 views
0

如何使jquery函数适用于第一次运行后添加的元素不适用于动态添加元素。使功能工作的元素动态添加与ajax

代码:

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,这样我就不必对已经附加函数的项目进行解除绑定。

我需要一个扭曲的第一个它也可以在新dynamycally元素上运行,我不明白如何使用“on”。

- 此外,元素从dom中删除并再次添加(使用相同的id - 也是相同的元素)会发生什么 - 我注意到与点击处理程序如果你想做一个$( ELEM)。单击(函数(){});你必须通过解绑 - 否则点击翻倍。

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

+1

你真的应该刚刚退出PHP来回应那个疯狂/毫无意义的引用转义。 – Dunhamzzz

+0

试过编辑,但只是放弃了。发布没有引号和PHP的东西的代码。 – adeneo

+0

'$(w).on('blur',function(){/ *在这里做你的东西!* /});' –

回答

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