在我的网络应用程序中,我有一个带有AJAX删除/删除按钮的购物车,它会刷新购物车并显示新购物车。
代码是这样的:
$(".delBtn").on("click", function(){
// Code here
});
当新推车显示时,删除按钮将不再有效。
我现在使用以下代码:
$(document).on("click", ".delBtn", function(){
// Code here
});
它按预期工作,但它是最好的选择吗?高级开发人员或专家会认为这是不好的代码吗?
答案 0 :(得分:4)
首先,为什么第一个代码段不起作用。
第一个代码所说的是“使用”delBtn“类选择当前页面上的每个元素,并且当单击它时,运行一个函数。”但是,在您这样做时,您的按钮不在页面上(因为它尚未添加),因此不会找到任何元素。相比之下,第二种方法表明,无论何时单击该页面,如果单击的元素具有类“delBtn”,则运行该函数。因为这只是在网页上查找点击次数,所以它适用于稍后添加的元素
至于原来的问题:
是和否。没关系,但你可能想把它改成不同的东西。这种方式的工作方式是jquery监听文档上的每个click事件,并检查被点击的元素是否与选择器匹配。因此,每次单击页面上的内容时,jquery都必须运行一些代码。
您可能应该做的是将$(document)更改为包含按钮的任何父元素。这将有更好的性能,因为jquery只需检查包含按钮的实际元素上的单击事件。