2012-08-31 49 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){});