jQuery on() – 是event.delegateTarget获取on()函数主容器的最佳方法吗?
我有一个与此类似的HTML:
和javascript:
$("div.ajax_table_container").on("click", "a.delete_element", function (event) { var adr = $(this).attr("href"); $(event.delegateTarget).html("TEST"); return false; });
在实际应用中,我正在从点击链接中提供的地址重新加载ajax请求的内容。
我的问题是,我正在使用最好的方法获得主div(使用类ajax_table_container
)。 我在谈论片段: event.delegateTarget
。 有没有更好的方法在jQuery中获取它? (顺便说一下。我不想在这里使用$('div.ajax_table_container')
– 在一个页面上可能有几个这样的div)
小提琴
编辑 :在得到一些答案并检查谷歌后我想将自己标记为重复;-)这里: 如何使用jquery.on(’click’)获取父选择器,基于点击的元素
如果您的目标是获得挂钩活动的元素,那么这不仅是您的最佳选择,而且几乎是您唯一的选择。
另一个我不提倡的选项是记住你在事件处理程序关闭的变量中使用的内容:
var $container = $("div.ajax_table_container"); $container.on("click", "a.delete_element", function (event) { var adr = $(this).attr("href"); $container.html("TEST"); return false; });
但是,由于jQuery为您提供了方便的delegateTarget
,这就是我使用的,除非有充分的理由使用其他东西。 将元素引用(而不是选择器)传递给$()
的成本并不大,很可能你在处理程序中做的其他事情都会消除它添加的任何开销。
你可以使用.closest() :
$(this).closest("div.ajax_table_container");
这将返回单击链接的父级。
因为,您在这里使用事件委托来注册事件处理程序,所以获取元素ajax_table_container
的最佳选项是在此处使用event.delegateTarget
。