我正在尝试将点击事件委托(delegate)给所有现在和 future 具有“面板”类的 div 的所有第一个 anchor 标记。我做了类似的事情:
$('#panel').delegate('.panels a:first', 'click', function(event) [...]
但这行不通。它只将事件绑定(bind)到一个,第一个“.panels”。有什么提示吗?
最佳答案
我不认为你可以只用一个选择器来做到这一点,除非碰巧 a
元素不仅是第一个 anchor ,而且是“面板”中任何类型的第一个子元素div
(在这种情况下,您可以使用 :first-child
)。
您可能需要在处理程序本身中加入一些逻辑,以检查单击的 anchor 是否是 div
中的第一个 anchor 。沿着这些线的东西:
$("#panel").delegate(".panels a", "click", function() {
if ($(this).siblings("a").andSelf()[0] === this) {
// It's the first anchor in its parent
}
return false;
});
之所以可行,是因为 siblings
和 andSelf
都保证按照文档顺序将数组保存在 jQuery 对象中,因此检查 this
是否是[0]
第一个元素有效。
关于javascript - jQuery 委托(delegate)选择器问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6640484/