1 回答
TA贡献1796条经验 获得超4个赞
您正在覆盖之前附加事件处理程序的 dom 元素。因此,您首先将单击事件附加到按钮,然后加载新的 HTML 并覆盖附加了处理程序的按钮,以便新按钮没有附加事件处理程序,这就是它们不响应单击事件的原因。
将事件处理程序附加到不会被覆盖的父元素,或者在加载并用新 html 覆盖后重新附加事件处理程序。
我可能会选择将事件附加到其父级,这样当事件在 dom 树上传播时它就会得到处理。
var buttons_parent = $('.galleryadv');
buttons_parent.on('click', '.avatar-galleryadv', function(){
$(this).hide(0);
$('.avatar-previewgalleryadvsave').fadeIn(300);
});
buttons_parent.on('click', '.avatar-previewgalleryadvsave', function(){
$(this).hide(0);
$('.avatar-galleryadv').fadeIn(300);
});
这代替了btn_edit.on("click", function() {...和 btn_save.on("click", function() {...。另外,我不会通过保存在变量中的引用来引用处理程序内的按钮,因为这些按钮在覆盖它们后将无效,因此我总是通过它们的类名来查找它们。
这样,即使按钮被覆盖,处理其单击事件的处理程序也完好无损。
- 1 回答
- 0 关注
- 97 浏览
添加回答
举报