【问题标题】:Why does jquery .click() work on href when adding [0]?为什么 jquery .click() 在添加 [0] 时对 href 起作用?
【发布时间】:2013-10-18 23:46:11
【问题描述】:

所以我遇到了一个问题,我需要刷新一个页面,但我无法在其上使用 .click() 方法,因为它不适用于 href。我不能使用 window.location 因为我试图渲染一个子选项卡,由于安全原因可以直接访问它。然后我偶然发现了这篇文章:

https://stackoverflow.com/a/12801548/1864552

他的解决方案有效,但我希望有人能很好地解释为什么会这样。

【问题讨论】:

  • 这应该是对原始问题的评论,而不是一个独立的问题。
  • @Blazemonger,你的意思是他指的原始答案?确实有人问为什么它可以作为对该问题的评论。
  • 您能否粘贴您的代码,看看您遇到的是相同的问题还是不同的问题?

标签: javascript jquery


【解决方案1】:

jQuery click function 触发与 jQuery 绑定的事件处理程序,并模拟一个事件以尝试触发其他点击相关的处理程序,但无法准确再现浏览器的原生行为:

虽然 .trigger() 模拟事件激活,但完成 合成的事件对象,它不能完美地复制一个 自然发生的事件。

如果添加[0],则调用的不是jQuery的函数而是the standard DOM function,在这种情况下完美运行。

【讨论】:

  • 只是为了给答案添加一点解释,jquery总是返回一个数组,当你添加[0]时它返回数组中的第一个dom元素。
  • 这是不正确的。这是一个特殊情况 - <a>click 事件。 jQuery 在使用 .event().trigger("event") 时确实会尝试触发原生 DOM 事件,但也有例外,这就是其中之一。他们专门针对这一点,所以href 不会被意外跟踪。
【解决方案2】:

因为使用$('#element')[0] 获取DOM 元素,因此您可以为该元素使用javascript 函数

【讨论】:

  • 所以没有 [0] 它返回 href 本身?
  • 仅使用 $('#element') 将获取 jQuery 对象中的元素,从而允许您使用 jQuery 函数 @JSnoob
  • @JSnoob 不,它会返回具有 href 属性的锚元素节点。
【解决方案3】:

jQuery 的$() 函数返回一个带有特殊方法的数组,例如:.css().append()。当调用这些特殊的数组函数之一时,jQuery 会将操作应用于数组中的所有元素。该数组由 DOM 节点组成,因此当我们使用 array[0] 语法访问它时,我们会得到一个具有不同方法集的 DOM 元素。

【讨论】:

  • 虽然 StackEdit 会自动将“Written with StackEdit”行插入到新文档中,但我们要求您在将答案发布到此处之前将其从答案中删除,因为这是不必要的(Stack Exchange 不在乎您使用什么只要它们的格式正确,就写你的帖子),因此只会给你的答案增加噪音。即使您实际上并没有自己创建工具,它甚至可以作为促销,这是不受欢迎的。另见meta.stackexchange.com/questions/202156/written-with-stackedit
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-11
  • 2014-09-25
  • 1970-01-01
  • 1970-01-01
  • 2011-10-04
  • 2014-04-03
相关资源
最近更新 更多