Javascript 将现有的单击功能重新附着到图元

Javascript 将现有的单击功能重新附着到图元,javascript,jquery,onclick,click,Javascript,Jquery,Onclick,Click,在我的网站上,我有一个内联编辑,用于快速编辑/保存。但是,在jQuery重新创建”)之后,它在第一次运行时工作正常; }); } }); 返回false; }); $('span#编辑a')。单击(函数(e){ e、 预防默认值(); var输入=$('span#adminnotice').text(); var lngth=输入长度; $('form#notice').html( \"\" + \"\" + \"\" ); $('span#adminnotice').hide();$('spa

在我的网站上,我有一个内联编辑,用于快速编辑/保存。但是,在jQuery重新创建
”)之后,它在第一次运行时工作正常;
});
}
});
返回false;
});
$('span#编辑a')。单击(函数(e){
e、 预防默认值();
var输入=$('span#adminnotice').text();
var lngth=输入长度;
$('form#notice').html(
\"\" +
\"\" +
\"\"
);
$('span#adminnotice').hide();$('span#edit').hide().html('');$('span#form').show();
返回false;
});
在第一次运行之后,
.click()
函数停止工作,因为我删除了
,然后重新添加它。如果我复制整个
,我可以让它工作。单击()
,并将其放入AJAX的
成功:
部分,但是,我知道一定有什么我不知道的,因为我非常怀疑jQuery的开发人员会要求程序员复制相同的代码两次


感谢您的帮助:D

您不需要复制代码,您可以将单击处理程序分配给局部变量并重新使用它:

var onClick = function(e) { ... };
$('span#edit a').click(onClick);
或者只将处理程序应用于未删除的元素(事件传播时仍将触发该处理程序):


您不需要复制代码,可以将click处理程序分配给局部变量并重新使用:

var onClick = function(e) { ... };
$('span#edit a').click(onClick);
或者只将处理程序应用于未删除的元素(事件传播时仍将触发该处理程序):


尝试使用jquery的委托

描述:根据一组特定的根元素,将处理程序附加到与选择器匹配的所有元素的一个或多个事件上(现在或将来)

所以你的提交可以被改写成

$('body').delegate('#notice','submit',function(e){
//do stuff here
});

尝试使用jquery的委托

描述:根据一组特定的根元素,将处理程序附加到与选择器匹配的所有元素的一个或多个事件上(现在或将来)

所以你的提交可以被改写成

$('body').delegate('#notice','submit',function(e){
//do stuff here
});
$('body')关于('click'、'span#edit a',函数(e){
e、 预防默认值();
var输入=$('span#adminnotice').text();
var lngth=输入长度;
$('form#notice').html(
\"\" +
\"\" +
\"\"
);
$('span#adminnotice').hide();$('span#edit').hide().html('');$('span#form').show();
返回false;
}); 
$('body')关于('click','span#edit a',函数(e){
e、 预防默认值();
var输入=$('span#adminnotice').text();
var lngth=输入长度;
$('form#notice').html(
\"\" +
\"\" +
\"\"
);
$('span#adminnotice').hide();$('span#edit').hide().html('');$('span#form').show();
返回false;
}); 

$('body')。在('click','span#edit a',function(){})上将单击功能委托给过滤器,以过滤
正文中匹配的所有元素。这将解决您的问题。
$('body')。在('click','span#edit a',function(){})上将单击功能委托给过滤器,以过滤
正文中匹配的所有元素。这将解决您的问题。这只是重新安排已经存在的内容-我正在询问如何刷新绑定,以便无论
删除/添加了多少次
$('span#edit a')。单击()仍然有效。刷新绑定的唯一方法是在AJAX中重新声明click()成功吗?好的,谢谢!与父级相关的第二个问题修复了它:)这只是重新安排了已经存在的内容-我在询问如何刷新绑定,以便无论
被删除/添加多少次
$('span#edit a')。单击()仍然有效。刷新绑定的唯一方法是在AJAX中重新声明click()成功吗?好的,谢谢!与父级相关的第二个已修复:)
$('body')on('click', 'span#edit a', 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;
});