【问题标题】:Delegating an event to the whole object将事件委托给整个对象
【发布时间】:2017-02-09 11:48:22
【问题描述】:

我有一个 jQuery 插件(我写过),它有一个匹配可选子选择器的选项。即:如果我有这个标记:

<div class="header">
  <a id="item-name">Blah</a>
  <span class="some-data">Numbers and Stuff</a>
  <span class="other-data">Bananas</a>
</div>

最初,我将点击事件委托给整个 .header 使用:

headerDiv.on('click', function () {

但随后需要将点击限制为仅锚点,因此为了保持兼容性,我使用了替代语法:

headerDiv.on('click',headerSelector, function () {

headerSelector 的位置默认为*,但我可以通过a 将其限制为仅锚点。我现在使用的默认* 选择器似乎有问题,有时点击没有注册。使用委托事件语法时是否有合适的方法来匹配元素本身?

【问题讨论】:

  • 请在您的插件中显示事件绑定器的代码

标签: javascript jquery html event-delegation


【解决方案1】:

默认是可以的

headerSelector = headerDiv

我认为它会等于headerDiv.on('click', function () {

【讨论】:

  • 我认为这行不通,因为它会在 headerDiv 中查找 headerDiv
【解决方案2】:

使用 document 作为父元素,内部选择器使用 headerDiv 和 *.如果给定孩子,则用它替换 *。

$(document).on('click', "headerDiv *", function(){})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-03
    相关资源
    最近更新 更多