3

这里曾经有:

$("#element").parent().click(function() { alert("smth"); });

新的 jQuery 事件委托相当于什么on

$(document).on("click", "how to select #element parent here?", function() { alert("smth"); });

更新:实际代码(虽然我看不出这会改变什么)

$(document).on("mouseover", ":has(>.hoverPhone)", function() {
    alert("smth");
});

“#hoverPhone”是 jquery 数据表的一列的单元格中的跨度。

<tr class="odd">
    <td class=" sorting_1">05/11/2012</td>
    <td class="">Surname</td>
    <td class="">
        <span class="hoverPhone" title="Alternative No: 0123456789">9876543210</span>
    </td>
    <td class="">DIGITAL CAMERA</td>
    <td class="">6140</td>
    <td class="">CAMTRONICS</td>
    <td class="">clarify</td>
</tr>

顺便说一句,这仍然行不通。

更新2:似乎工作。然而,个人评论......“:has(> .element)”真的,jQuery?下一步是什么?这越来越令人困惑。

4

4 回答 4

7

我有最简单的:

$(document).on("click", ":has(>#element)", function(){...

示范

于 2012-11-15T12:52:05.607 回答
2

您仍然可以以相同的方式分配事件侦听器:

$('#element').parent().on('click', function() { });
于 2012-11-15T12:53:11.297 回答
1

如果您正在寻找委托来处理动态添加的元素,那么您不能按照您建议的方式进行操作。您需要处理可能是父元素的所有元素的单击事件,并检查它们是否将有问题的元素作为子元素...

$(document).on("click", "*", function() {
    if ($(this).children("#element").length > 0) {
        alert("parent clicked");
    }
});

如果可能,我强烈建议更改document为更接近的容器元素,并更改*为父标记类型。

于 2012-11-15T12:59:59.550 回答
1

这仍然可以正常工作:

$("#element").parent().on("click", function() {
     alert("smth"); 
});
于 2012-11-15T12:54:33.197 回答