javascript - jQuery 委托(delegate)选择器问题

标签 javascript jquery

我正在尝试将点击事件委托(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;
});

Live example

之所以可行,是因为 siblingsandSelf 都保证按照文档顺序将数组保存在 jQuery 对象中,因此检查 this 是否是[0]第一个元素有效。

关于javascript - jQuery 委托(delegate)选择器问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6640484/

相关文章:

javascript - 如何创建一个接受 12 个数字(带加号、减号、空格)的正则表达式

javascript - AMCharts x 轴上的时间戳

jquery - 如何隐藏列表项过滤html搜索框

jquery - CodeIgniter、Jquery Ajax、表单提交和文件上传

jquery - 使用 a 将图像附加到另一个图像上并获取坐标,使其可拖动和删除

javascript - 当我的复选框未被选中时,我需要改变我的成功

jquery - Bootstrap div 在窗口调整大小时重叠

javascript - 从 Python 使用远程 chrome devtools

javascript - Backbone 错误从何而来?

javascript - 尝试使用 Restify 发送 JSON 响应