jQuery on() - 是event.delegateTarget获取on()函数主容器的最佳方法吗?

Kel*_*all 5 ajax jquery

我有一个与此类似的HTML:

<div class="ajax_table_container">
    <table>
        <tr>
            <td><a href="ajax.php?action=delete&id=1" class="delete_element">DELETE</a></td>
        </tr>
        <tr>
            <td><a href="ajax.php?action=delete&id=2" class="delete_element">DELETE</a></td>
        </tr>
    </table>
</div>
Run Code Online (Sandbox Code Playgroud)

和javascript:

$("div.ajax_table_container").on("click", "a.delete_element", function (event) {
    var adr = $(this).attr("href");    
    $(event.delegateTarget).html("TEST");
    return false;
});
Run Code Online (Sandbox Code Playgroud)

在实际应用中,我正在从点击的链接中提供的地址重新加载ajax请求的内容.

我的问题是,我正在使用最好的方法获得主div(与类ajax_table_container).我在谈论片段:event.delegateTarget.有没有更好的方法在jQuery中获取它?(顺便说一下.我不想在$('div.ajax_table_container')这里使用- 一页上可能有几个div)

小提琴

编辑:在得到一些答案并检查谷歌后我想将自己标记为重复;-)这里:如何使用jquery.on('click')获取父选择器,基于点击的元素

T.J*_*der 8

如果你的目标是获得你挂钩活动的元素,那么这不仅是你最好的选择,而且几乎是你唯一的选择.

另一个我不提倡的选项是记住你在事件处理程序关闭的变量中使用的内容:

var $container = $("div.ajax_table_container");
$container.on("click", "a.delete_element", function (event) {
    var adr = $(this).attr("href");    
    $container.html("TEST");
    return false;
});
Run Code Online (Sandbox Code Playgroud)

但是,由于jQuery为您提供了方便delegateTarget,这就是我使用的,除非有充分的理由使用其他东西.传递元素引用(而不是选择器)的成本$()根本不是很大,很可能你在处理程序中做的其他事情都会消除它添加的任何开销.