【问题标题】:Event data returns empty object in jquery when using "on()"使用“on()”时,事件数据在 jquery 中返回空对象
【发布时间】:2015-05-23 13:57:30
【问题描述】:

我正在尝试对页面上当前不可用的元素使用使用“on()”的事件委托。在这种情况下,我需要将一些数据传递给“on()”函数,它是一个 JSON 对象。代码如下:

$(document).off('click',targetElement).on('click',targetElement,eventData,function(e){
    e.preventDefault();
    e.stopImmediatePropagation();
  console.log(e.data)
  });

我的问题是,当触发此事件时,e.data 作为空对象返回,因此 m 无法使用它。 我已经使用此处提供的参考 API 构建了此代码:http://api.jquery.com/on/

谁能指导一下这里出了什么问题?

P.S 目标元素不在页面上。它在某些函数调用时呈现。

【问题讨论】:

  • 无法复制;你有什么工作正常:jsfiddle.net/vvyy6mpL你能在你的问题中添加一个问题的工作演示吗?
  • 这是您代码的一部分吗?你在哪里定义targetElement?你必须用你的对象的正确 ID 替换“targetElement”。
  • @RoryMcCrossan 在小提琴中,您提供的元素在 DOM 中。尝试动态创建元素然后绑定它。
  • @user1481887 鉴于代码仍然使用委托事件处理程序,这没有区别。
  • @AliSheikhpour 这个绑定声明来自另一个函数,该函数在元素插入 DOM 后被调用。但我认为当我们以这种方式使用“on()”时,这并不重要。

标签: javascript jquery events delegation


【解决方案1】:

尝试在触发函数中获取目标元素(使用 e.target),然后使用你想要的:

$(document).on('click',function(e){
    e.preventDefault();
    e.stopImmediatePropagation();
    console.log($(e.target))
    });  

【讨论】:

  • 如何在其中拉取事件数据“e.data”?
  • e.target.innerHTML 是否满足您的需求?
  • 不。我需要将要传递给它的 JSON 数据
  • 试试 console.log($(e.target)) 这将返回一个完整的事件属性数组。你可以提取你想要的。帖子也更新了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-07
相关资源
最近更新 更多