如何使 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 以便我不必须对已附加该功能的项目进行解除绑定。
我需要对第一个进行修改,以便它也可以在新的动态元素上运行,我不明白如何使用“on”。
- 此外,从 dom 中删除并再次添加的元素会发生什么(具有相同的 id - 也是相同的元素) - 如果你想做 $(elem).click(功能(){}); 你必须通过 unbind - 否则点击加倍。
我想知道如何进行第一次扭曲,并检查之前的 focus() 或 blur() 是否附加到被检测为动态生成的同一元素,如果是这种情况,则不要再次附加 focus() 和模糊()。因为我在页面上有从 dom 中删除然后再次添加的元素,这些元素涉及输入或带有占位符的文本区域。