在我的網站上,我有一個內聯編輯,用於快速編輯/保存。它在第一次運行時運行良好,但是,在jQuery重新創建<a>
標記後,它停止工作。這裏是jQuery的:將現有的點擊功能重新添加到元素
$('form#notice').submit(function(e){
e.preventDefault();
var a = $('form#notice input[name=\'act\']').val();
var n = $('input[name=\'notice\']').val();
$('span#form').hide(); $('span#adminnotice').html(n).show(); $('span#edit').show();
$.ajax({
type: 'POST',
data: { act:a, set:n },
success: function(result){
$('span#edit').html('<img src=\'./images/check.png\' />').delay(1000).fadeOut('slow', function(){
$(this).html('<a href=\'#\'>[edit]</a>').fadeIn('fast');
});
}
});
return false;
});
$('span#edit a').click(function(e){
e.preventDefault();
var input = $('span#adminnotice').text();
var lngth = input.length;
$('form#notice').html(
\"<input type='text' name='notice' value='\"+input+\"' style='width:\"+((lngth+1)*6)+\"px' onkeyup=\\\"this.style.width=((this.value.length+1)*6)+'px';\\\" maxlength='256' />\" +
\"<input type='hidden' name='act' value='adminnotice' />\" +
\"<input type='submit' value='Update' />\"
);
$('span#adminnotice').hide();$('span#edit').hide().html('<img src=\'./images/saving2.gif\' />');$('span#form').show();
return false;
});
後的第一行程中,.click()
功能停止工作,因爲我刪除了<a>
,然後重新添加它。如果我複製整個.click()
並將其放入AJAX的success:
部分中,我可以使其工作,但是,我知道必須有一些我不知道的東西,因爲我非常懷疑jQuery的開發人員會要求程序員複製相同的代碼兩次。
感謝您的幫助:d
'$( '身體')。在( '點擊', '跨度#編輯',函數(){ });'委託click函數過濾所有匹配'body'的元素。這將解決您的問題。 – Ohgodwhy 2012-07-12 15:33:12