jQuery .on 父级选择器

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数据表格的一列单元格中的一个span。
<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 吗?接下来会是什么呢?这越来越令人困惑了。


为我们创建一个演示版,展示你正在做的事情。这将有助于制定更好的答案。 - aziz punjani
关于您在更新2中的评论:jQuery必须同时处理与CSS(逐步构建)某种兼容性和许多复杂情况。这并不容易。当您深入了解正则表达式时,您会更加震惊... - Denys Séguret
4个回答

7

The simplest I have :

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

演示


1
虽然出于某些原因,"> elem" 已经被弃用,但这是我看到的唯一简短的方法。 - VisioN
1
@dystroy 我愿意支付1欧元给那些能够证明:text选择器也应该被弃用的人。这是有史以来最愚蠢的决定。 - VisioN
@VisioN:显然,“:text”已经过时,因为它只是“[type=text]”的语法糖,而且由于它本质上是这样的,保留它是没有必要的,因为它会带来无法优化成“querySelectorAll”的缺点。虽然说,我不知道他们为什么不能手动地通过编写代码实现这种优化。(*有点) - David Hedlund
@DavidHedlund <input> 元素默认也是 text 类型,但你不能使用 [type=text] 选择它。与此同时,:text 成功完成了这个任务。 - VisioN
@DavidHedlund 只要你不像我一样将类型未指定而离开它(因为它默认为“文本”),那么这就是语法糖。 - Denys Séguret
显示剩余7条评论

2
您仍然可以以相同的方式分配事件侦听器:
$('#element').parent().on('click', function() { });

2
他想要使用委托。 - Reinstate Monica Cellio
我不确定这是否是被要求的内容。 - David Hedlund
@Caballero:如果您想要动态委托,它不应该起作用。它只是您的.click.on等效项,在这个意义上它是有效的(演示)。 - David Hedlund

1

这仍然可以正常工作:

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

1

如果您正在寻找委派来处理动态添加的元素,那么您不能按照您提出的方式进行。您需要处理所有可能成为父级的元素的点击事件,并检查它们是否将该元素作为子元素...

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接