获取委托事件绑定的根元素 - jQuery

Jam*_*uth 8 jquery

采用以下代码:

    // Bind the click event to the thumbnails.
    $("ul.hpList").on("click", "a.hpThumb", function (event) {

        event.preventDefault();

        var $this = $(this),

        // Surely there has to be a smarter way to do this.
            $hpList = $this.parents("ul.hpList");

        changeItem($this, $hpList);

    });
Run Code Online (Sandbox Code Playgroud)

如何更好地识别事件绑定的根祖先元素.我觉得搜索DOM很糟糕.

Mat*_*att 20

从jQuery 1.7开始,该delegateTarget属性包含在作为第一个参数提供给您的事件对象中,(根据文档),它为您提供:

附加当前调用的jQuery事件处理程序的元素.

所以请给以下一点;

$("ul.hpList").on("click", "a.hpThumb", function (event) {
    event.preventDefault();

    var $this = $(this),
    var $hpList = $(event.delegateTarget);

    changeItem($this, $hpList);
});
Run Code Online (Sandbox Code Playgroud)