使用`Not`与`Delegate` - Jquery

3

我目前有这样的代码:

$(".jtable tbody td").not(".DeleteLicense").hover(

我该如何使用委托?类似这样的形式:
$("#resultContainer,#approvalContainer,#createNewContainer").delegate(".jtable tbody td....

谢谢!

3个回答

3
您可以使用 :not() 选择器 将否定条件纳入到您的选择器中。
$("#resultContainer,#approvalContainer,#createNewContainer")
    .delegate(".jtable tbody td:not(.DeleteLicense)", "...", ...);

请注意,jQuery文档建议在大多数情况下使用.not()函数而不是:not()选择器,但我不确定在这种情况下是否可行。
如果您愿意采用另一种方法,您可能会发现在调用delegate时,您可以使用.jtable tbody td选择器,并在您的事件处理程序中使用if(!$(this).is(".DeleteLicense")) { ... }来仅处理符合您条件的元素。

很好的示例,展示了如何使用非选择器,我之前不知道。 - kralco626
使用后者方法与前者方法相比是否有优势? - kralco626
在我看来,使用:not()选择器可以使代码更清晰、更易于理解。但是我不知道这两种方法的性能影响如何。在事件处理程序中使用.is会使事情变得更加复杂,因为你的选择器说一件事,但你的代码却做另一件事。 - Zack The Human

2

像这样:

$("#resultContainer,#approvalContainer,#createNewContainer").delegate(".jtable tbody td:not('.DeleteLicense')", "hover", function(eventObj) {
    // handler code
});

0

我的第一个想法是尝试使用 :not() 选择器

$("#resultContainer,#approvalContainer,#createNewContainer").delegate(".jtable tbody td:not('.DeleteLicense')", "hover", function(){ /* do stuff */});

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